{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "e06a3ce0-5523-41c5-8e04-6a867b47f757",
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import gzip\n",
    "import time\n",
    "import itertools\n",
    "\n",
    "# import sys\n",
    "# sys.setrecursionlimit(10**6)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "2706999d-eeaf-4621-a653-a904180fb9bf",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "from adjustText import adjust_text\n",
    "from statannotations.Annotator import Annotator\n",
    "# import anndata as ad\n",
    "\n",
    "from scipy.spatial.distance import pdist, correlation\n",
    "from scipy.stats import ttest_ind\n",
    "from sklearn.metrics import pairwise_distances\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.decomposition import PCA\n",
    "\n",
    "import networkx as nx\n",
    "# from netgraph import Graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "aebcd297-a931-40f0-8d99-9d0de69a5485",
   "metadata": {},
   "outputs": [],
   "source": [
    "def dist_pv(data, n_boot=1000, random_state=42, metric='correlation'):   \n",
    "    \n",
    "    # data = adata_ml[:, pool_mkr].layers['am_VPS28_MT-CO1'].T #(adata_ml.obs.ar=='0')\n",
    "    # estimate = 1-pdist(data, metric=metric)\n",
    "    estimate = pdist(data, metric=metric)\n",
    "    n = data.shape[0]\n",
    "    rng = np.random.RandomState(random_state)\n",
    "    bootsam = rng.random_sample((n_boot, n)).argsort(axis=1)\n",
    "    bootstat = []#np.empty(n_boot)\n",
    "    for i in range(n_boot):\n",
    "        # bootstat.append(1-pdist(data[bootsam[i]], metric=metric))\n",
    "        bootstat.append(pdist(data[bootsam[i]], metric=metric))\n",
    "    bootstat = np.asarray(bootstat)\n",
    "    pval = np.greater_equal(np.fabs(bootstat), abs(estimate)).sum(axis=0) / n_boot\n",
    "\n",
    "    return estimate, pval"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "72e724fd-1579-47e4-a2af-ed689ff48638",
   "metadata": {},
   "outputs": [],
   "source": [
    "def coloring_communities(cluster, color_list):\n",
    "    node_labels = dict()\n",
    "    colors = []\n",
    "    node_color = dict()\n",
    "    node_community = dict()\n",
    "    node = 0\n",
    "    i = 0\n",
    "    l = len(cluster)\n",
    "    if color_list == None:\n",
    "        for com in cluster:\n",
    "            for c in com:\n",
    "                # colors.append(col)\n",
    "                # node_color[c] = col\n",
    "                node_community[c] = i\n",
    "                node_labels[c] = c\n",
    "                node+=1\n",
    "            i+=1\n",
    "    else:\n",
    "        \n",
    "        for com, col in zip(cluster, color_list[:l]):\n",
    "            for c in com:\n",
    "                colors.append(col)\n",
    "                node_color[c] = col\n",
    "                node_community[c] = i\n",
    "                node_labels[c] = c\n",
    "                node+=1\n",
    "            i+=1\n",
    "    return node_color, node_labels, node_community\n",
    "\n",
    "def get_positive_corr_edges(G):\n",
    "    g = G.copy()\n",
    "    i =0 \n",
    "    del_edges = []\n",
    "    for u,v,w in g.edges(data=True):\n",
    "        # if w['weight']==-1:\n",
    "        if w['weight']>=0:\n",
    "            del_edges.append((u,v))\n",
    "    g.remove_edges_from(del_edges)\n",
    "    return g\n",
    "\n",
    "def get_negative_corr_edges(G):\n",
    "    g = G.copy()\n",
    "    i =0 \n",
    "    del_edges = []\n",
    "    for u,v,w in g.edges(data=True):\n",
    "        # if w['weight']==1:\n",
    "        if w['weight']<0:\n",
    "            del_edges.append((u,v))\n",
    "    g.remove_edges_from(del_edges)\n",
    "    return g\n",
    "\n",
    "def graph_diff(G1, G2):\n",
    "    \"\"\"Finds the difference between two graphs, even with different node sets.\"\"\"\n",
    "\n",
    "    # Find nodes present only in G1\n",
    "    nodes_only_in_G1 = set(G1.nodes) - set(G2.nodes)\n",
    "    G1_diff = G1.subgraph(nodes_only_in_G1)\n",
    "\n",
    "    # Find nodes present only in G2\n",
    "    nodes_only_in_G2 = set(G2.nodes) - set(G1.nodes)\n",
    "    G2_diff = G2.subgraph(nodes_only_in_G2)\n",
    "\n",
    "    # Find the common subgraph\n",
    "    common_nodes = set(G1.nodes) & set(G2.nodes)\n",
    "    G1_common = G1.subgraph(common_nodes)\n",
    "    G2_common = G2.subgraph(common_nodes)\n",
    "\n",
    "    # Find the difference in edges within the common subgraph\n",
    "    edge_diff = nx.difference(G1_common, G2_common)\n",
    "\n",
    "    return edge_diff #G1_diff, G2_diff, "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "70987f3a-f155-4349-a0b4-c52fb377595a",
   "metadata": {},
   "source": [
    "# Differential expression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "acda0177-2732-40df-8ef3-0dcbb88882eb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(1.3010299956639813)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "-np.log10(0.05)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "da78e434-f9b8-49e9-8071-ef4c76e0befc",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/guilherme/miniconda3/envs/DSenv/lib/python3.13/site-packages/pandas/core/arraylike.py:399: RuntimeWarning: divide by zero encountered in log10\n",
      "  result = getattr(ufunc, method)(*inputs, **kwargs)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>baseMean</th>\n",
       "      <th>log2FoldChange</th>\n",
       "      <th>lfcSE</th>\n",
       "      <th>stat</th>\n",
       "      <th>pvalue</th>\n",
       "      <th>padj</th>\n",
       "      <th>-log10padj</th>\n",
       "      <th>regulation</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Ltf</th>\n",
       "      <td>32506.061454</td>\n",
       "      <td>1.717321</td>\n",
       "      <td>0.036276</td>\n",
       "      <td>47.339976</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>278.375041</td>\n",
       "      <td>Upregulated</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mmp9</th>\n",
       "      <td>1591.782048</td>\n",
       "      <td>2.532673</td>\n",
       "      <td>0.067475</td>\n",
       "      <td>37.534776</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>278.375041</td>\n",
       "      <td>Upregulated</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S100a9</th>\n",
       "      <td>70474.212634</td>\n",
       "      <td>1.391906</td>\n",
       "      <td>0.038736</td>\n",
       "      <td>35.933495</td>\n",
       "      <td>9.164459e-283</td>\n",
       "      <td>4.216568e-279</td>\n",
       "      <td>278.375041</td>\n",
       "      <td>Upregulated</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ngp</th>\n",
       "      <td>73329.958257</td>\n",
       "      <td>1.585603</td>\n",
       "      <td>0.049749</td>\n",
       "      <td>31.871898</td>\n",
       "      <td>6.547192e-223</td>\n",
       "      <td>2.259272e-219</td>\n",
       "      <td>218.646031</td>\n",
       "      <td>Upregulated</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Lcn2</th>\n",
       "      <td>12461.254656</td>\n",
       "      <td>1.707417</td>\n",
       "      <td>0.055482</td>\n",
       "      <td>30.774056</td>\n",
       "      <td>5.829505e-208</td>\n",
       "      <td>1.609293e-204</td>\n",
       "      <td>203.793365</td>\n",
       "      <td>Upregulated</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rnf166</th>\n",
       "      <td>2526.138144</td>\n",
       "      <td>-0.000016</td>\n",
       "      <td>0.053814</td>\n",
       "      <td>-0.000302</td>\n",
       "      <td>9.997594e-01</td>\n",
       "      <td>9.999192e-01</td>\n",
       "      <td>0.000035</td>\n",
       "      <td>Not-significant</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Spg21</th>\n",
       "      <td>3564.982096</td>\n",
       "      <td>0.000019</td>\n",
       "      <td>0.059968</td>\n",
       "      <td>0.000310</td>\n",
       "      <td>9.997528e-01</td>\n",
       "      <td>9.999192e-01</td>\n",
       "      <td>0.000035</td>\n",
       "      <td>Not-significant</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ubl7</th>\n",
       "      <td>1236.823243</td>\n",
       "      <td>0.000029</td>\n",
       "      <td>0.086180</td>\n",
       "      <td>0.000338</td>\n",
       "      <td>9.997301e-01</td>\n",
       "      <td>9.999192e-01</td>\n",
       "      <td>0.000035</td>\n",
       "      <td>Not-significant</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Atp13a1</th>\n",
       "      <td>2607.349664</td>\n",
       "      <td>0.000006</td>\n",
       "      <td>0.052052</td>\n",
       "      <td>0.000117</td>\n",
       "      <td>9.999067e-01</td>\n",
       "      <td>9.999791e-01</td>\n",
       "      <td>0.000009</td>\n",
       "      <td>Not-significant</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Dexi</th>\n",
       "      <td>266.331464</td>\n",
       "      <td>-0.000002</td>\n",
       "      <td>0.145223</td>\n",
       "      <td>-0.000012</td>\n",
       "      <td>9.999906e-01</td>\n",
       "      <td>9.999906e-01</td>\n",
       "      <td>0.000004</td>\n",
       "      <td>Not-significant</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>13803 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "             baseMean  log2FoldChange     lfcSE       stat         pvalue  \\\n",
       "Ltf      32506.061454        1.717321  0.036276  47.339976   0.000000e+00   \n",
       "Mmp9      1591.782048        2.532673  0.067475  37.534776   0.000000e+00   \n",
       "S100a9   70474.212634        1.391906  0.038736  35.933495  9.164459e-283   \n",
       "Ngp      73329.958257        1.585603  0.049749  31.871898  6.547192e-223   \n",
       "Lcn2     12461.254656        1.707417  0.055482  30.774056  5.829505e-208   \n",
       "...               ...             ...       ...        ...            ...   \n",
       "Rnf166    2526.138144       -0.000016  0.053814  -0.000302   9.997594e-01   \n",
       "Spg21     3564.982096        0.000019  0.059968   0.000310   9.997528e-01   \n",
       "Ubl7      1236.823243        0.000029  0.086180   0.000338   9.997301e-01   \n",
       "Atp13a1   2607.349664        0.000006  0.052052   0.000117   9.999067e-01   \n",
       "Dexi       266.331464       -0.000002  0.145223  -0.000012   9.999906e-01   \n",
       "\n",
       "                  padj  -log10padj       regulation  \n",
       "Ltf       0.000000e+00  278.375041      Upregulated  \n",
       "Mmp9      0.000000e+00  278.375041      Upregulated  \n",
       "S100a9   4.216568e-279  278.375041      Upregulated  \n",
       "Ngp      2.259272e-219  218.646031      Upregulated  \n",
       "Lcn2     1.609293e-204  203.793365      Upregulated  \n",
       "...                ...         ...              ...  \n",
       "Rnf166    9.999192e-01    0.000035  Not-significant  \n",
       "Spg21     9.999192e-01    0.000035  Not-significant  \n",
       "Ubl7      9.999192e-01    0.000035  Not-significant  \n",
       "Atp13a1   9.999791e-01    0.000009  Not-significant  \n",
       "Dexi      9.999906e-01    0.000004  Not-significant  \n",
       "\n",
       "[13803 rows x 8 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# df_de = pd.read_csv('/mnt/e/Karina_Borges_Project_004/greaterAbs_0_Cond_vs_Control_res.csv', index_col=0)\n",
    "df_de = pd.read_csv('greaterAbs_0_Cond_vs_Control_res.csv', index_col=0)\n",
    "\n",
    "df_de = df_de.dropna(subset='padj')\n",
    "\n",
    "df_de['-log10padj'] = -np.log10(df_de['padj'])\n",
    "df_de['-log10padj'] = df_de['-log10padj'].replace([np.inf],df_de[df_de['-log10padj']!=np.inf]['-log10padj'].max())\n",
    "\n",
    "condlist = [(df_de['log2FoldChange']>0) & (df_de['-log10padj']>=-np.log10(0.05)),\n",
    "            (df_de['log2FoldChange']<0) & (df_de['-log10padj']>=-np.log10(0.05))]\n",
    "choice = ['red', 'royalblue']\n",
    "\n",
    "df_de['regulation'] = np.select(condlist, ['Upregulated','Downregulated'], default='Not-significant')\n",
    "df_de"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "20bb9f6a-cb88-45a1-a89d-e488421ce240",
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib\n",
    "matplotlib.rcParams.update({'font.size': 16})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "f09b44c9-668c-450f-a936-9478a08a30f9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 500x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(5,5))\n",
    "ax = fig.add_subplot(1,1,1)\n",
    "\n",
    "\n",
    "y = '-log10padj'#'padj'#\n",
    "\n",
    "hue_order = ['Upregulated','Downregulated']\n",
    "\n",
    "sns.scatterplot(x='log2FoldChange', y=y, color='grey', #s=70,\n",
    "                edgecolor=None, alpha=0.5,\n",
    "                data=df_de[(df_de.regulation=='Not-significant') ], ax=ax) #& (~df_de.index.isin(hg))\n",
    "\n",
    "sns.scatterplot(x='log2FoldChange', y=y, palette=['red', 'royalblue'],\n",
    "                hue='regulation', hue_order=hue_order, #s=70,#s=100, \n",
    "                edgecolor='black', alpha=1,\n",
    "                data=df_de[(df_de.regulation!='Not-significant') ], ax=ax) #& (df_de.index.isin(hg))\n",
    "\n",
    "# sns.scatterplot(x='log2FoldChange', y='-log10padj', color='grey', #s=10,\n",
    "#                 edgecolor=None, alpha=0.5,\n",
    "#                 data=df_de[df_de.regulation=='Not-significant'], ax=ax)\n",
    "\n",
    "\n",
    "ax.axhline(-np.log10(0.05), color='black', ls='dashed', lw=1.5, alpha=0.6)\n",
    "# ax.axvline(1, color='black', ls='dashed', lw=1.5, alpha=0.6)\n",
    "# ax.axvline(-1, color='black', ls='dashed', lw=1.5, alpha=0.6)\n",
    "ax.axvline(0, color='black', ls='dashed', lw=1.5, alpha=0.6)\n",
    "\n",
    "ax.set_title(' ')#, fontsize=32, family='Arial')\n",
    "ax.set_xlabel('log2FoldChange', fontsize=16)#, family='Arial')\n",
    "ax.set_ylabel('-log10padj', fontsize=16)#, family='Arial')\n",
    "# ax.tick_params(axis='both', which='major', labelsize=24)\n",
    "\n",
    "\n",
    "\n",
    "# n = 15\n",
    "# texts = []\n",
    "# # for l,x,y in df_de[df_de.index.isin(hg)].sort_values('padj')[['log2FoldChange','-log10padj']].reset_index().values:\n",
    "# #     texts.append(ax.text(x, y, l,  va='center',ha='center', family='Arial',# fontsize=12,\n",
    "# #                         ))\n",
    "# for l,x,y in df_de[df_de.regulation=='Downregulated'].sort_values(['-log10padj','log2FoldChange'], ascending=False).iloc[:n,:][['log2FoldChange','-log10padj']].reset_index().values:\n",
    "#     texts.append(ax.text(x, y, l,  va='center',ha='center', \n",
    "#                         ))\n",
    "# for l,x,y in df_de[df_de.regulation=='Upregulated'].sort_values(['-log10padj','log2FoldChange'], ascending=False).iloc[:n,:][['log2FoldChange','-log10padj']].reset_index().values:\n",
    "#     texts.append(ax.text(x, y, l,  va='center',ha='center', \n",
    "#                         ))\n",
    "# adjust_text(texts, ax=ax, arrowprops=dict(arrowstyle=\"-\", color='k', lw=1.1, alpha=.95),\n",
    "#             expand=(2.5, 2.5),\n",
    "#            )\n",
    "\n",
    "# ax.set_xscale('log')\n",
    "ax.set_yscale('log')\n",
    "\n",
    "ax.set_xlim(xmin=-5, xmax=4.1)\n",
    "ax.set_ylim(ymin=1)#, ymax=55)\n",
    "\n",
    "reg_dict = dict(df_de.groupby('regulation').count()[y])\n",
    "\n",
    "# ax_volcano.text(-5, 25.5, '134', fontsize=12, color='royalblue')\n",
    "# ax_volcano.text(4.5, 25.5, '428', fontsize=12, color='crimson')\n",
    "\n",
    "ax.text(.88,.93, reg_dict['Upregulated'], color='crimson', transform = ax.transAxes)#, fontsize=12)#, family='Arial') #1327\n",
    "ax.text(.01,.93,reg_dict['Downregulated'], color='royalblue', transform = ax.transAxes)#, fontsize=12)#, family='Arial') #1104\n",
    "ax.grid(False)\n",
    "# plt.legend(loc='upper center', title='', fontsize=16)\n",
    "ax.get_legend().remove()\n",
    "\n",
    "fig.tight_layout()\n",
    "# fig.savefig('volcano_v3_cut_extremes.pdf', format='pdf', dpi=300, bbox_inches='tight')\n",
    "# fig.savefig('volcano_v2.pdf', format='pdf', dpi=300, bbox_inches='tight')\n",
    "fig.savefig('volcano_v4_ylog_cut3genes.pdf', format='pdf', dpi=300, bbox_inches='tight')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "19b83c0b-5d1d-44e0-9864-47b00763b69f",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_de[~((df_de.log2FoldChange.abs()<=2) & (df_de['-log10padj']<55))].to_csv('cut_genes.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "id": "44e9fdff-e61c-45e8-a89f-ee75bdcf9d0c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Mycbp2, Zfp968, Col3a1, Rec114, "
     ]
    }
   ],
   "source": [
    "for g in df_de[((df_de.log2FoldChange<=-5) | (df_de.log2FoldChange>=4.1)) & (df_de['padj']<=0.05)].index:\n",
    "    print(g, end=', ')#.to_csv('cut_genes.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e73cb19c-81bd-48ac-a99c-f7e8bf168ad1",
   "metadata": {},
   "source": [
    "# Enrichment analysis by DE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "45f91a56-cce8-488d-b459-e7a7842ecdbf",
   "metadata": {},
   "outputs": [
    {
     "ename": "ModuleNotFoundError",
     "evalue": "No module named 'mygene'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mModuleNotFoundError\u001b[0m                       Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[3], line 2\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mgseapy\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mgp\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mmygene\u001b[39;00m\n\u001b[1;32m      3\u001b[0m mg \u001b[38;5;241m=\u001b[39m mygene\u001b[38;5;241m.\u001b[39mMyGeneInfo()\n",
      "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'mygene'"
     ]
    }
   ],
   "source": [
    "import gseapy as gp\n",
    "import mygene\n",
    "mg = mygene.MyGeneInfo()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 202,
   "id": "feb27f44-0dbf-43c3-9110-732f216ddcc8",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_de['lfc_sign'] = np.sign(df_de.log2FoldChange).values\n",
    "df_de['rank'] = df_de['lfc_sign'] * df_de['-log10padj']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 212,
   "id": "009d0da9-bff4-41ca-a689-6397a8f2326c",
   "metadata": {},
   "outputs": [],
   "source": [
    "tx2gene['Gene_ID2'] = tx2gene['Gene_ID'].str.split('.').str[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 216,
   "id": "f140462a-0519-4f4c-a6bc-e773ed052bff",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_de['ensembl'] = df_de.index.map(dict(tx2gene[['Gene_name','Gene_ID2']].values))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 242,
   "id": "d33af900-984c-402d-9a33-35b195b38f0b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>baseMean</th>\n",
       "      <th>log2FoldChange</th>\n",
       "      <th>lfcSE</th>\n",
       "      <th>stat</th>\n",
       "      <th>pvalue</th>\n",
       "      <th>padj</th>\n",
       "      <th>-log10padj</th>\n",
       "      <th>regulation</th>\n",
       "      <th>lfc_sign</th>\n",
       "      <th>rank</th>\n",
       "      <th>ensembl</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Ltf</th>\n",
       "      <td>32506.061454</td>\n",
       "      <td>1.717321</td>\n",
       "      <td>0.036276</td>\n",
       "      <td>47.339976</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>278.375041</td>\n",
       "      <td>Upregulated</td>\n",
       "      <td>1.0</td>\n",
       "      <td>278.375041</td>\n",
       "      <td>ENSMUSG00000032496</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mmp9</th>\n",
       "      <td>1591.782048</td>\n",
       "      <td>2.532673</td>\n",
       "      <td>0.067475</td>\n",
       "      <td>37.534776</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>278.375041</td>\n",
       "      <td>Upregulated</td>\n",
       "      <td>1.0</td>\n",
       "      <td>278.375041</td>\n",
       "      <td>ENSMUSG00000017737</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S100a9</th>\n",
       "      <td>70474.212634</td>\n",
       "      <td>1.391906</td>\n",
       "      <td>0.038736</td>\n",
       "      <td>35.933495</td>\n",
       "      <td>9.164459e-283</td>\n",
       "      <td>4.216568e-279</td>\n",
       "      <td>278.375041</td>\n",
       "      <td>Upregulated</td>\n",
       "      <td>1.0</td>\n",
       "      <td>278.375041</td>\n",
       "      <td>ENSMUSG00000056071</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ngp</th>\n",
       "      <td>73329.958257</td>\n",
       "      <td>1.585603</td>\n",
       "      <td>0.049749</td>\n",
       "      <td>31.871898</td>\n",
       "      <td>6.547192e-223</td>\n",
       "      <td>2.259272e-219</td>\n",
       "      <td>218.646031</td>\n",
       "      <td>Upregulated</td>\n",
       "      <td>1.0</td>\n",
       "      <td>218.646031</td>\n",
       "      <td>ENSMUSG00000032484</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Lcn2</th>\n",
       "      <td>12461.254656</td>\n",
       "      <td>1.707417</td>\n",
       "      <td>0.055482</td>\n",
       "      <td>30.774056</td>\n",
       "      <td>5.829505e-208</td>\n",
       "      <td>1.609293e-204</td>\n",
       "      <td>203.793365</td>\n",
       "      <td>Upregulated</td>\n",
       "      <td>1.0</td>\n",
       "      <td>203.793365</td>\n",
       "      <td>ENSMUSG00000026822</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rnf166</th>\n",
       "      <td>2526.138144</td>\n",
       "      <td>-0.000016</td>\n",
       "      <td>0.053814</td>\n",
       "      <td>-0.000302</td>\n",
       "      <td>9.997594e-01</td>\n",
       "      <td>9.999192e-01</td>\n",
       "      <td>0.000035</td>\n",
       "      <td>Not-significant</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-0.000035</td>\n",
       "      <td>ENSMUSG00000014470</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Spg21</th>\n",
       "      <td>3564.982096</td>\n",
       "      <td>0.000019</td>\n",
       "      <td>0.059968</td>\n",
       "      <td>0.000310</td>\n",
       "      <td>9.997528e-01</td>\n",
       "      <td>9.999192e-01</td>\n",
       "      <td>0.000035</td>\n",
       "      <td>Not-significant</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.000035</td>\n",
       "      <td>ENSMUSG00000032388</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ubl7</th>\n",
       "      <td>1236.823243</td>\n",
       "      <td>0.000029</td>\n",
       "      <td>0.086180</td>\n",
       "      <td>0.000338</td>\n",
       "      <td>9.997301e-01</td>\n",
       "      <td>9.999192e-01</td>\n",
       "      <td>0.000035</td>\n",
       "      <td>Not-significant</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.000035</td>\n",
       "      <td>ENSMUSG00000055720</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Atp13a1</th>\n",
       "      <td>2607.349664</td>\n",
       "      <td>0.000006</td>\n",
       "      <td>0.052052</td>\n",
       "      <td>0.000117</td>\n",
       "      <td>9.999067e-01</td>\n",
       "      <td>9.999791e-01</td>\n",
       "      <td>0.000009</td>\n",
       "      <td>Not-significant</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.000009</td>\n",
       "      <td>ENSMUSG00000031862</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Dexi</th>\n",
       "      <td>266.331464</td>\n",
       "      <td>-0.000002</td>\n",
       "      <td>0.145223</td>\n",
       "      <td>-0.000012</td>\n",
       "      <td>9.999906e-01</td>\n",
       "      <td>9.999906e-01</td>\n",
       "      <td>0.000004</td>\n",
       "      <td>Not-significant</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-0.000004</td>\n",
       "      <td>ENSMUSG00000038055</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>13803 rows × 11 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "             baseMean  log2FoldChange     lfcSE       stat         pvalue  \\\n",
       "Ltf      32506.061454        1.717321  0.036276  47.339976   0.000000e+00   \n",
       "Mmp9      1591.782048        2.532673  0.067475  37.534776   0.000000e+00   \n",
       "S100a9   70474.212634        1.391906  0.038736  35.933495  9.164459e-283   \n",
       "Ngp      73329.958257        1.585603  0.049749  31.871898  6.547192e-223   \n",
       "Lcn2     12461.254656        1.707417  0.055482  30.774056  5.829505e-208   \n",
       "...               ...             ...       ...        ...            ...   \n",
       "Rnf166    2526.138144       -0.000016  0.053814  -0.000302   9.997594e-01   \n",
       "Spg21     3564.982096        0.000019  0.059968   0.000310   9.997528e-01   \n",
       "Ubl7      1236.823243        0.000029  0.086180   0.000338   9.997301e-01   \n",
       "Atp13a1   2607.349664        0.000006  0.052052   0.000117   9.999067e-01   \n",
       "Dexi       266.331464       -0.000002  0.145223  -0.000012   9.999906e-01   \n",
       "\n",
       "                  padj  -log10padj       regulation  lfc_sign        rank  \\\n",
       "Ltf       0.000000e+00  278.375041      Upregulated       1.0  278.375041   \n",
       "Mmp9      0.000000e+00  278.375041      Upregulated       1.0  278.375041   \n",
       "S100a9   4.216568e-279  278.375041      Upregulated       1.0  278.375041   \n",
       "Ngp      2.259272e-219  218.646031      Upregulated       1.0  218.646031   \n",
       "Lcn2     1.609293e-204  203.793365      Upregulated       1.0  203.793365   \n",
       "...                ...         ...              ...       ...         ...   \n",
       "Rnf166    9.999192e-01    0.000035  Not-significant      -1.0   -0.000035   \n",
       "Spg21     9.999192e-01    0.000035  Not-significant       1.0    0.000035   \n",
       "Ubl7      9.999192e-01    0.000035  Not-significant       1.0    0.000035   \n",
       "Atp13a1   9.999791e-01    0.000009  Not-significant       1.0    0.000009   \n",
       "Dexi      9.999906e-01    0.000004  Not-significant      -1.0   -0.000004   \n",
       "\n",
       "                    ensembl  \n",
       "Ltf      ENSMUSG00000032496  \n",
       "Mmp9     ENSMUSG00000017737  \n",
       "S100a9   ENSMUSG00000056071  \n",
       "Ngp      ENSMUSG00000032484  \n",
       "Lcn2     ENSMUSG00000026822  \n",
       "...                     ...  \n",
       "Rnf166   ENSMUSG00000014470  \n",
       "Spg21    ENSMUSG00000032388  \n",
       "Ubl7     ENSMUSG00000055720  \n",
       "Atp13a1  ENSMUSG00000031862  \n",
       "Dexi     ENSMUSG00000038055  \n",
       "\n",
       "[13803 rows x 11 columns]"
      ]
     },
     "execution_count": 242,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_de"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 223,
   "id": "f3321c6e-0886-4ab6-9626-3f7d134fc3aa",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "1 input query terms found dup hits:\t[('ENSMUSG00000072694', 2)]\n",
      "4 input query terms found no hit:\t['ENSMUSG00000040715', 'ENSMUSG00000116048', 'ENSMUSG00000034007', 'ENSMUSG00000094083']\n"
     ]
    }
   ],
   "source": [
    "df_symbol2ensg_2 = mg.querymany(df_de.ensembl.tolist(), scopes=['ensembl.gene'], species='mouse', fields=['symbol','entrezgene'], as_dataframe=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 269,
   "id": "a85ec0c4-b730-45b5-aa1a-6f8dcf5af11e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# df_symbol2ensg_2[df_symbol2ensg_2.entrezgene.isna()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 270,
   "id": "71250cdd-ca1f-4531-b664-8ec64d47437e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# mg.getgene('ENSMUSG00000032496',species='mouse',fields='entrezgene')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 271,
   "id": "571adb1c-d53c-47c8-8689-8632a3fb731d",
   "metadata": {},
   "outputs": [],
   "source": [
    "ensg_entrez = dict(df_symbol2ensg_2['entrezgene'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 272,
   "id": "1102be6a-3946-4689-ae1a-49effc88e421",
   "metadata": {},
   "outputs": [],
   "source": [
    "ensg_entrez['ENSMUSG00000040715'] = '69994'\n",
    "ensg_entrez['ENSMUSG00000116048'] = '18000'\n",
    "ensg_entrez['ENSMUSG00000034007'] = '244891'\n",
    "ensg_entrez['ENSMUSG00000094083'] = '100040822'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 273,
   "id": "ed7495fc-e665-4f31-b951-4a5d0a05d4ed",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_de['entrez'] = df_de.ensembl.map(ensg_entrez)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 274,
   "id": "58933702-322c-4672-b4dc-741720a416e4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>baseMean</th>\n",
       "      <th>log2FoldChange</th>\n",
       "      <th>lfcSE</th>\n",
       "      <th>stat</th>\n",
       "      <th>pvalue</th>\n",
       "      <th>padj</th>\n",
       "      <th>-log10padj</th>\n",
       "      <th>regulation</th>\n",
       "      <th>lfc_sign</th>\n",
       "      <th>rank</th>\n",
       "      <th>ensembl</th>\n",
       "      <th>entrez</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Nrg1</th>\n",
       "      <td>898.946717</td>\n",
       "      <td>-0.603206</td>\n",
       "      <td>0.093342</td>\n",
       "      <td>-6.462343</td>\n",
       "      <td>1.030939e-10</td>\n",
       "      <td>1.259297e-08</td>\n",
       "      <td>7.899872</td>\n",
       "      <td>Downregulated</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-7.899872</td>\n",
       "      <td>ENSMUSG00000118541</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Nnt</th>\n",
       "      <td>2042.901288</td>\n",
       "      <td>-0.348903</td>\n",
       "      <td>0.057295</td>\n",
       "      <td>-6.089531</td>\n",
       "      <td>1.132416e-09</td>\n",
       "      <td>1.207490e-07</td>\n",
       "      <td>6.918116</td>\n",
       "      <td>Downregulated</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-6.918116</td>\n",
       "      <td>ENSMUSG00000116207</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rps4l</th>\n",
       "      <td>387.449439</td>\n",
       "      <td>0.544866</td>\n",
       "      <td>0.127287</td>\n",
       "      <td>4.280605</td>\n",
       "      <td>1.863861e-05</td>\n",
       "      <td>8.575624e-04</td>\n",
       "      <td>3.066734</td>\n",
       "      <td>Upregulated</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3.066734</td>\n",
       "      <td>ENSMUSG00000063171</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm20716</th>\n",
       "      <td>4709.403879</td>\n",
       "      <td>-0.139429</td>\n",
       "      <td>0.047238</td>\n",
       "      <td>-2.951613</td>\n",
       "      <td>3.161192e-03</td>\n",
       "      <td>6.305482e-02</td>\n",
       "      <td>1.200282</td>\n",
       "      <td>Not-significant</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.200282</td>\n",
       "      <td>ENSMUSG00000093752</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm8113</th>\n",
       "      <td>788.632107</td>\n",
       "      <td>-0.318317</td>\n",
       "      <td>0.109557</td>\n",
       "      <td>-2.905499</td>\n",
       "      <td>3.666676e-03</td>\n",
       "      <td>7.091477e-02</td>\n",
       "      <td>1.149263</td>\n",
       "      <td>Not-significant</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-1.149263</td>\n",
       "      <td>ENSMUSG00000089901</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm45717</th>\n",
       "      <td>3.046393</td>\n",
       "      <td>-0.073840</td>\n",
       "      <td>1.327441</td>\n",
       "      <td>-0.055626</td>\n",
       "      <td>9.556400e-01</td>\n",
       "      <td>9.986443e-01</td>\n",
       "      <td>0.000589</td>\n",
       "      <td>Not-significant</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-0.000589</td>\n",
       "      <td>ENSMUSG00000110104</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm49391</th>\n",
       "      <td>35.853748</td>\n",
       "      <td>-0.025947</td>\n",
       "      <td>0.391456</td>\n",
       "      <td>-0.066284</td>\n",
       "      <td>9.471519e-01</td>\n",
       "      <td>9.986443e-01</td>\n",
       "      <td>0.000589</td>\n",
       "      <td>Not-significant</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-0.000589</td>\n",
       "      <td>ENSMUSG00000114432</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm49392</th>\n",
       "      <td>11.750126</td>\n",
       "      <td>0.018290</td>\n",
       "      <td>0.662115</td>\n",
       "      <td>0.027623</td>\n",
       "      <td>9.779627e-01</td>\n",
       "      <td>9.986443e-01</td>\n",
       "      <td>0.000589</td>\n",
       "      <td>Not-significant</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.000589</td>\n",
       "      <td>ENSMUSG00000114635</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm52993</th>\n",
       "      <td>3.266888</td>\n",
       "      <td>-0.069206</td>\n",
       "      <td>1.244166</td>\n",
       "      <td>-0.055624</td>\n",
       "      <td>9.556412e-01</td>\n",
       "      <td>9.986443e-01</td>\n",
       "      <td>0.000589</td>\n",
       "      <td>Not-significant</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-0.000589</td>\n",
       "      <td>ENSMUSG00000093639</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm49721</th>\n",
       "      <td>5.727092</td>\n",
       "      <td>-0.002620</td>\n",
       "      <td>1.245061</td>\n",
       "      <td>-0.002105</td>\n",
       "      <td>9.983208e-01</td>\n",
       "      <td>9.998506e-01</td>\n",
       "      <td>0.000065</td>\n",
       "      <td>Not-significant</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>-0.000065</td>\n",
       "      <td>ENSMUSG00000116876</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>134 rows × 12 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            baseMean  log2FoldChange     lfcSE      stat        pvalue  \\\n",
       "Nrg1      898.946717       -0.603206  0.093342 -6.462343  1.030939e-10   \n",
       "Nnt      2042.901288       -0.348903  0.057295 -6.089531  1.132416e-09   \n",
       "Rps4l     387.449439        0.544866  0.127287  4.280605  1.863861e-05   \n",
       "Gm20716  4709.403879       -0.139429  0.047238 -2.951613  3.161192e-03   \n",
       "Gm8113    788.632107       -0.318317  0.109557 -2.905499  3.666676e-03   \n",
       "...              ...             ...       ...       ...           ...   \n",
       "Gm45717     3.046393       -0.073840  1.327441 -0.055626  9.556400e-01   \n",
       "Gm49391    35.853748       -0.025947  0.391456 -0.066284  9.471519e-01   \n",
       "Gm49392    11.750126        0.018290  0.662115  0.027623  9.779627e-01   \n",
       "Gm52993     3.266888       -0.069206  1.244166 -0.055624  9.556412e-01   \n",
       "Gm49721     5.727092       -0.002620  1.245061 -0.002105  9.983208e-01   \n",
       "\n",
       "                 padj  -log10padj       regulation  lfc_sign      rank  \\\n",
       "Nrg1     1.259297e-08    7.899872    Downregulated      -1.0 -7.899872   \n",
       "Nnt      1.207490e-07    6.918116    Downregulated      -1.0 -6.918116   \n",
       "Rps4l    8.575624e-04    3.066734      Upregulated       1.0  3.066734   \n",
       "Gm20716  6.305482e-02    1.200282  Not-significant      -1.0 -1.200282   \n",
       "Gm8113   7.091477e-02    1.149263  Not-significant      -1.0 -1.149263   \n",
       "...               ...         ...              ...       ...       ...   \n",
       "Gm45717  9.986443e-01    0.000589  Not-significant      -1.0 -0.000589   \n",
       "Gm49391  9.986443e-01    0.000589  Not-significant      -1.0 -0.000589   \n",
       "Gm49392  9.986443e-01    0.000589  Not-significant       1.0  0.000589   \n",
       "Gm52993  9.986443e-01    0.000589  Not-significant      -1.0 -0.000589   \n",
       "Gm49721  9.998506e-01    0.000065  Not-significant      -1.0 -0.000065   \n",
       "\n",
       "                    ensembl entrez  \n",
       "Nrg1     ENSMUSG00000118541    NaN  \n",
       "Nnt      ENSMUSG00000116207    NaN  \n",
       "Rps4l    ENSMUSG00000063171    NaN  \n",
       "Gm20716  ENSMUSG00000093752    NaN  \n",
       "Gm8113   ENSMUSG00000089901    NaN  \n",
       "...                     ...    ...  \n",
       "Gm45717  ENSMUSG00000110104    NaN  \n",
       "Gm49391  ENSMUSG00000114432    NaN  \n",
       "Gm49392  ENSMUSG00000114635    NaN  \n",
       "Gm52993  ENSMUSG00000093639    NaN  \n",
       "Gm49721  ENSMUSG00000116876    NaN  \n",
       "\n",
       "[134 rows x 12 columns]"
      ]
     },
     "execution_count": 274,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_de[df_de.entrez.isna()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 178,
   "id": "f5cebafa-c861-4cb0-962e-9dfdcbb2f575",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['Reactome_2013', 'Reactome_2015', 'Reactome_2016', 'Reactome_2022', 'Reactome_Pathways_2024']\n"
     ]
    }
   ],
   "source": [
    "print([p for p in gp.get_library_name() if 'actome' in p])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 276,
   "id": "58fd3e67-a29e-4ca8-8a1d-7751afa51fe6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rank</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Ltf</th>\n",
       "      <td>278.375041</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S100a9</th>\n",
       "      <td>278.375041</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mmp9</th>\n",
       "      <td>278.375041</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ngp</th>\n",
       "      <td>218.646031</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Lcn2</th>\n",
       "      <td>203.793365</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rag1</th>\n",
       "      <td>-19.408449</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Thap4</th>\n",
       "      <td>-22.054595</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hspa1a</th>\n",
       "      <td>-38.701868</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rsrp1</th>\n",
       "      <td>-40.649449</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hspa1b</th>\n",
       "      <td>-86.225802</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>4357 rows × 1 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "              rank\n",
       "Ltf     278.375041\n",
       "S100a9  278.375041\n",
       "Mmp9    278.375041\n",
       "Ngp     218.646031\n",
       "Lcn2    203.793365\n",
       "...            ...\n",
       "Rag1    -19.408449\n",
       "Thap4   -22.054595\n",
       "Hspa1a  -38.701868\n",
       "Rsrp1   -40.649449\n",
       "Hspa1b  -86.225802\n",
       "\n",
       "[4357 rows x 1 columns]"
      ]
     },
     "execution_count": 276,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_de[df_de.pvalue<0.25].sort_values('rank', ascending=False)[['rank']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 277,
   "id": "5cc35f1a-14ee-4133-8ef2-b11e47352a16",
   "metadata": {},
   "outputs": [],
   "source": [
    "gene_sets = ['Reactome_Pathways_2024','WikiPathways_2024_Mouse','KEGG_2019_Mouse','GO_Biological_Process_2025','GO_Cellular_Component_2025','GO_Molecular_Function_2025']\n",
    "rank = df_de[df_de.pvalue<0.25].sort_values('rank', ascending=False)[['rank']]\n",
    "rank.index = rank.index.str.upper()\n",
    "background = df_de.index.str.upper().tolist()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 279,
   "id": "d5ca91e3-7e1f-4f3f-9010-0debc05717be",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2025-05-06 12:47:38,534 [WARNING] Duplicated values found in preranked stats: 34.36% of genes\n",
      "The order of those genes will be arbitrary, which may produce unexpected results.\n"
     ]
    }
   ],
   "source": [
    "pre_enr = gp.prerank(rnk=rank,\n",
    "                     gene_sets=gene_sets,\n",
    "                     seed= 42,\n",
    "                     organism='mouse',\n",
    "                     outdir=None,#'/mnt/e/Karina_Borges_Project_004/enrichment',\n",
    "                     # background=background,\n",
    "                    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 283,
   "id": "4e6c4b95-d7a0-41ad-aebb-5b2ab5439ee8",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_enr = pre_enr.res2d.sort_values('FDR q-val').drop('Name', axis=1)\n",
    "# df_enr.to_csv('/mnt/e/Karina_Borges_Project_004/gsea_rank.csv', index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 308,
   "id": "3532120d-b054-4220-b715-277ac00efe6d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Term</th>\n",
       "      <th>ES</th>\n",
       "      <th>NES</th>\n",
       "      <th>NOM p-val</th>\n",
       "      <th>FDR q-val</th>\n",
       "      <th>FWER p-val</th>\n",
       "      <th>Tag %</th>\n",
       "      <th>Gene %</th>\n",
       "      <th>Lead_genes</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>KEGG_2019_Mouse__Spliceosome</td>\n",
       "      <td>-0.908505</td>\n",
       "      <td>-2.284548</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2/37</td>\n",
       "      <td>0.09%</td>\n",
       "      <td>HSPA1B;HSPA1A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>51</th>\n",
       "      <td>KEGG_2019_Mouse__IL-17 signaling pathway</td>\n",
       "      <td>0.980353</td>\n",
       "      <td>1.778396</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000845</td>\n",
       "      <td>0.001</td>\n",
       "      <td>4/26</td>\n",
       "      <td>0.18%</td>\n",
       "      <td>MMP9;S100A9;LCN2;S100A8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>GO_Biological_Process_2025__mRNA Metabolic Pro...</td>\n",
       "      <td>-0.910175</td>\n",
       "      <td>-2.22337</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.01405</td>\n",
       "      <td>0.017</td>\n",
       "      <td>4/33</td>\n",
       "      <td>2.18%</td>\n",
       "      <td>HSPA1B;HSPA1A;ZFP36;ERN1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>55</th>\n",
       "      <td>GO_Biological_Process_2025__Regulation of Orga...</td>\n",
       "      <td>0.966951</td>\n",
       "      <td>1.760359</td>\n",
       "      <td>0.001245</td>\n",
       "      <td>0.018597</td>\n",
       "      <td>0.033</td>\n",
       "      <td>2/33</td>\n",
       "      <td>0.18%</td>\n",
       "      <td>S100A9;S100A8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>57</th>\n",
       "      <td>GO_Biological_Process_2025__Defense Response t...</td>\n",
       "      <td>0.96134</td>\n",
       "      <td>1.757104</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.018878</td>\n",
       "      <td>0.05</td>\n",
       "      <td>6/46</td>\n",
       "      <td>1.08%</td>\n",
       "      <td>LTF;S100A9;LCN2;S100A8;PGLYRP1;FPR2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1362</th>\n",
       "      <td>WikiPathways_2024_Mouse__Metapathway Biotransf...</td>\n",
       "      <td>0.383666</td>\n",
       "      <td>0.692357</td>\n",
       "      <td>0.797695</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>8/32</td>\n",
       "      <td>12.12%</td>\n",
       "      <td>FMO5;GSTM5;CHST10;MGST2;CHST11;UGT1A6A;MGST3;GSR</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1091</th>\n",
       "      <td>GO_Molecular_Function_2025__Cadherin Binding (...</td>\n",
       "      <td>0.478173</td>\n",
       "      <td>0.860312</td>\n",
       "      <td>0.644468</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>11/105</td>\n",
       "      <td>8.86%</td>\n",
       "      <td>OLFM4;ANXA1;VASP;PROM1;CNN2;VCL;PRDX5;EHD1;NUM...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1093</th>\n",
       "      <td>Reactome_Pathways_2024__TP53 Regulates Metabol...</td>\n",
       "      <td>0.488065</td>\n",
       "      <td>0.859357</td>\n",
       "      <td>0.620776</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>22/33</td>\n",
       "      <td>35.28%</td>\n",
       "      <td>MLST8;MT-CO2;MT-CO1;GSR;PRDX6;COX7A2;LAMTOR4;P...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1374</th>\n",
       "      <td>GO_Cellular_Component_2025__Focal Adhesion (GO...</td>\n",
       "      <td>0.384036</td>\n",
       "      <td>0.685559</td>\n",
       "      <td>0.845829</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>19/145</td>\n",
       "      <td>8.49%</td>\n",
       "      <td>ANXA1;ACTN1;GSN;ITGB2;IGF2R;CPNE3;CD9;VASP;CAP...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1227</th>\n",
       "      <td>Reactome_Pathways_2024__Cyclin E Associated Ev...</td>\n",
       "      <td>0.451595</td>\n",
       "      <td>0.778695</td>\n",
       "      <td>0.706569</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>5/15</td>\n",
       "      <td>21.94%</td>\n",
       "      <td>CDC25A;RB1;MYC;CCNE1;TFDP1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1728 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                   Term        ES       NES  \\\n",
       "0                          KEGG_2019_Mouse__Spliceosome -0.908505 -2.284548   \n",
       "51             KEGG_2019_Mouse__IL-17 signaling pathway  0.980353  1.778396   \n",
       "1     GO_Biological_Process_2025__mRNA Metabolic Pro... -0.910175  -2.22337   \n",
       "55    GO_Biological_Process_2025__Regulation of Orga...  0.966951  1.760359   \n",
       "57    GO_Biological_Process_2025__Defense Response t...   0.96134  1.757104   \n",
       "...                                                 ...       ...       ...   \n",
       "1362  WikiPathways_2024_Mouse__Metapathway Biotransf...  0.383666  0.692357   \n",
       "1091  GO_Molecular_Function_2025__Cadherin Binding (...  0.478173  0.860312   \n",
       "1093  Reactome_Pathways_2024__TP53 Regulates Metabol...  0.488065  0.859357   \n",
       "1374  GO_Cellular_Component_2025__Focal Adhesion (GO...  0.384036  0.685559   \n",
       "1227  Reactome_Pathways_2024__Cyclin E Associated Ev...  0.451595  0.778695   \n",
       "\n",
       "     NOM p-val FDR q-val FWER p-val   Tag %  Gene %  \\\n",
       "0          0.0       0.0        0.0    2/37   0.09%   \n",
       "51         0.0  0.000845      0.001    4/26   0.18%   \n",
       "1          0.0   0.01405      0.017    4/33   2.18%   \n",
       "55    0.001245  0.018597      0.033    2/33   0.18%   \n",
       "57         0.0  0.018878       0.05    6/46   1.08%   \n",
       "...        ...       ...        ...     ...     ...   \n",
       "1362  0.797695       1.0        1.0    8/32  12.12%   \n",
       "1091  0.644468       1.0        1.0  11/105   8.86%   \n",
       "1093  0.620776       1.0        1.0   22/33  35.28%   \n",
       "1374  0.845829       1.0        1.0  19/145   8.49%   \n",
       "1227  0.706569       1.0        1.0    5/15  21.94%   \n",
       "\n",
       "                                             Lead_genes  \n",
       "0                                         HSPA1B;HSPA1A  \n",
       "51                              MMP9;S100A9;LCN2;S100A8  \n",
       "1                              HSPA1B;HSPA1A;ZFP36;ERN1  \n",
       "55                                        S100A9;S100A8  \n",
       "57                  LTF;S100A9;LCN2;S100A8;PGLYRP1;FPR2  \n",
       "...                                                 ...  \n",
       "1362   FMO5;GSTM5;CHST10;MGST2;CHST11;UGT1A6A;MGST3;GSR  \n",
       "1091  OLFM4;ANXA1;VASP;PROM1;CNN2;VCL;PRDX5;EHD1;NUM...  \n",
       "1093  MLST8;MT-CO2;MT-CO1;GSR;PRDX6;COX7A2;LAMTOR4;P...  \n",
       "1374  ANXA1;ACTN1;GSN;ITGB2;IGF2R;CPNE3;CD9;VASP;CAP...  \n",
       "1227                         CDC25A;RB1;MYC;CCNE1;TFDP1  \n",
       "\n",
       "[1728 rows x 9 columns]"
      ]
     },
     "execution_count": 308,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# df_enr#[df_enr['FDR q-val']<=0.1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 286,
   "id": "69e9db38-d864-419c-bc0d-e12cf911f9d2",
   "metadata": {},
   "outputs": [],
   "source": [
    "# df_enr[df_enr['FDR q-val']<=0.05]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "d507a011-6806-4973-bd40-b68fe9538424",
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: '/mnt/d/reference_files/mus_musculus/release_M34/gene_id2gene_nameWgene_lenght_biotype_gencode.vM34.annotation.csv'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[4], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m tx2gene \u001b[38;5;241m=\u001b[39m pd\u001b[38;5;241m.\u001b[39mread_csv(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m/mnt/d/reference_files/mus_musculus/release_M34/gene_id2gene_nameWgene_lenght_biotype_gencode.vM34.annotation.csv\u001b[39m\u001b[38;5;124m'\u001b[39m)\n",
      "File \u001b[0;32m~/miniconda3/envs/DSenv/lib/python3.13/site-packages/pandas/io/parsers/readers.py:1026\u001b[0m, in \u001b[0;36mread_csv\u001b[0;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, date_format, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options, dtype_backend)\u001b[0m\n\u001b[1;32m   1013\u001b[0m kwds_defaults \u001b[38;5;241m=\u001b[39m _refine_defaults_read(\n\u001b[1;32m   1014\u001b[0m     dialect,\n\u001b[1;32m   1015\u001b[0m     delimiter,\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m   1022\u001b[0m     dtype_backend\u001b[38;5;241m=\u001b[39mdtype_backend,\n\u001b[1;32m   1023\u001b[0m )\n\u001b[1;32m   1024\u001b[0m kwds\u001b[38;5;241m.\u001b[39mupdate(kwds_defaults)\n\u001b[0;32m-> 1026\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m _read(filepath_or_buffer, kwds)\n",
      "File \u001b[0;32m~/miniconda3/envs/DSenv/lib/python3.13/site-packages/pandas/io/parsers/readers.py:620\u001b[0m, in \u001b[0;36m_read\u001b[0;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[1;32m    617\u001b[0m _validate_names(kwds\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnames\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m))\n\u001b[1;32m    619\u001b[0m \u001b[38;5;66;03m# Create the parser.\u001b[39;00m\n\u001b[0;32m--> 620\u001b[0m parser \u001b[38;5;241m=\u001b[39m TextFileReader(filepath_or_buffer, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwds)\n\u001b[1;32m    622\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m chunksize \u001b[38;5;129;01mor\u001b[39;00m iterator:\n\u001b[1;32m    623\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m parser\n",
      "File \u001b[0;32m~/miniconda3/envs/DSenv/lib/python3.13/site-packages/pandas/io/parsers/readers.py:1620\u001b[0m, in \u001b[0;36mTextFileReader.__init__\u001b[0;34m(self, f, engine, **kwds)\u001b[0m\n\u001b[1;32m   1617\u001b[0m     \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39moptions[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhas_index_names\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m kwds[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhas_index_names\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m   1619\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles: IOHandles \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m-> 1620\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_engine \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_make_engine(f, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mengine)\n",
      "File \u001b[0;32m~/miniconda3/envs/DSenv/lib/python3.13/site-packages/pandas/io/parsers/readers.py:1880\u001b[0m, in \u001b[0;36mTextFileReader._make_engine\u001b[0;34m(self, f, engine)\u001b[0m\n\u001b[1;32m   1878\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m mode:\n\u001b[1;32m   1879\u001b[0m         mode \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m-> 1880\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles \u001b[38;5;241m=\u001b[39m get_handle(\n\u001b[1;32m   1881\u001b[0m     f,\n\u001b[1;32m   1882\u001b[0m     mode,\n\u001b[1;32m   1883\u001b[0m     encoding\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39moptions\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mencoding\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m),\n\u001b[1;32m   1884\u001b[0m     compression\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39moptions\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcompression\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m),\n\u001b[1;32m   1885\u001b[0m     memory_map\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39moptions\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmemory_map\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mFalse\u001b[39;00m),\n\u001b[1;32m   1886\u001b[0m     is_text\u001b[38;5;241m=\u001b[39mis_text,\n\u001b[1;32m   1887\u001b[0m     errors\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39moptions\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mencoding_errors\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstrict\u001b[39m\u001b[38;5;124m\"\u001b[39m),\n\u001b[1;32m   1888\u001b[0m     storage_options\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39moptions\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstorage_options\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m),\n\u001b[1;32m   1889\u001b[0m )\n\u001b[1;32m   1890\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m   1891\u001b[0m f \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles\u001b[38;5;241m.\u001b[39mhandle\n",
      "File \u001b[0;32m~/miniconda3/envs/DSenv/lib/python3.13/site-packages/pandas/io/common.py:873\u001b[0m, in \u001b[0;36mget_handle\u001b[0;34m(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)\u001b[0m\n\u001b[1;32m    868\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(handle, \u001b[38;5;28mstr\u001b[39m):\n\u001b[1;32m    869\u001b[0m     \u001b[38;5;66;03m# Check whether the filename is to be opened in binary mode.\u001b[39;00m\n\u001b[1;32m    870\u001b[0m     \u001b[38;5;66;03m# Binary mode does not support 'encoding' and 'newline'.\u001b[39;00m\n\u001b[1;32m    871\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m ioargs\u001b[38;5;241m.\u001b[39mencoding \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m ioargs\u001b[38;5;241m.\u001b[39mmode:\n\u001b[1;32m    872\u001b[0m         \u001b[38;5;66;03m# Encoding\u001b[39;00m\n\u001b[0;32m--> 873\u001b[0m         handle \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mopen\u001b[39m(\n\u001b[1;32m    874\u001b[0m             handle,\n\u001b[1;32m    875\u001b[0m             ioargs\u001b[38;5;241m.\u001b[39mmode,\n\u001b[1;32m    876\u001b[0m             encoding\u001b[38;5;241m=\u001b[39mioargs\u001b[38;5;241m.\u001b[39mencoding,\n\u001b[1;32m    877\u001b[0m             errors\u001b[38;5;241m=\u001b[39merrors,\n\u001b[1;32m    878\u001b[0m             newline\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m    879\u001b[0m         )\n\u001b[1;32m    880\u001b[0m     \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m    881\u001b[0m         \u001b[38;5;66;03m# Binary mode\u001b[39;00m\n\u001b[1;32m    882\u001b[0m         handle \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mopen\u001b[39m(handle, ioargs\u001b[38;5;241m.\u001b[39mmode)\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '/mnt/d/reference_files/mus_musculus/release_M34/gene_id2gene_nameWgene_lenght_biotype_gencode.vM34.annotation.csv'"
     ]
    }
   ],
   "source": [
    "tx2gene = pd.read_csv('/mnt/d/reference_files/mus_musculus/release_M34/gene_id2gene_nameWgene_lenght_biotype_gencode.vM34.annotation.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "9ed678ee-59f4-40ec-a300-6765114be199",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Transcript_ID</th>\n",
       "      <th>Gene_name</th>\n",
       "      <th>Gene_ID</th>\n",
       "      <th>Gene_type</th>\n",
       "      <th>Gene_lenght</th>\n",
       "      <th>Transcript_Name</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>ENSMUST00000193812.2</td>\n",
       "      <td>4933401J01Rik</td>\n",
       "      <td>ENSMUSG00000102693.2</td>\n",
       "      <td>TEC</td>\n",
       "      <td>1070</td>\n",
       "      <td>4933401J01Rik-201</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>ENSMUST00000082908.3</td>\n",
       "      <td>Gm26206</td>\n",
       "      <td>ENSMUSG00000064842.3</td>\n",
       "      <td>snRNA</td>\n",
       "      <td>110</td>\n",
       "      <td>Gm26206-201</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>ENSMUST00000070533.5</td>\n",
       "      <td>Xkr4</td>\n",
       "      <td>ENSMUSG00000051951.6</td>\n",
       "      <td>protein_coding</td>\n",
       "      <td>457017</td>\n",
       "      <td>Xkr4-201</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>ENSMUST00000192857.2</td>\n",
       "      <td>Gm18956</td>\n",
       "      <td>ENSMUSG00000102851.2</td>\n",
       "      <td>processed_pseudogene</td>\n",
       "      <td>480</td>\n",
       "      <td>Gm18956-201</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>ENSMUST00000195335.2</td>\n",
       "      <td>Gm37180</td>\n",
       "      <td>ENSMUSG00000103377.2</td>\n",
       "      <td>TEC</td>\n",
       "      <td>2819</td>\n",
       "      <td>Gm37180-201</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>84165</th>\n",
       "      <td>ENSMUST00000082419.1</td>\n",
       "      <td>mt-Nd6</td>\n",
       "      <td>ENSMUSG00000064368.1</td>\n",
       "      <td>protein_coding</td>\n",
       "      <td>519</td>\n",
       "      <td>mt-Nd6-201</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>84166</th>\n",
       "      <td>ENSMUST00000082420.1</td>\n",
       "      <td>mt-Te</td>\n",
       "      <td>ENSMUSG00000064369.1</td>\n",
       "      <td>Mt_tRNA</td>\n",
       "      <td>69</td>\n",
       "      <td>mt-Te-201</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>84167</th>\n",
       "      <td>ENSMUST00000082421.1</td>\n",
       "      <td>mt-Cytb</td>\n",
       "      <td>ENSMUSG00000064370.1</td>\n",
       "      <td>protein_coding</td>\n",
       "      <td>1144</td>\n",
       "      <td>mt-Cytb-201</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>84168</th>\n",
       "      <td>ENSMUST00000082422.1</td>\n",
       "      <td>mt-Tt</td>\n",
       "      <td>ENSMUSG00000064371.1</td>\n",
       "      <td>Mt_tRNA</td>\n",
       "      <td>67</td>\n",
       "      <td>mt-Tt-201</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>84169</th>\n",
       "      <td>ENSMUST00000082423.1</td>\n",
       "      <td>mt-Tp</td>\n",
       "      <td>ENSMUSG00000064372.1</td>\n",
       "      <td>Mt_tRNA</td>\n",
       "      <td>67</td>\n",
       "      <td>mt-Tp-201</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>84170 rows × 6 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "              Transcript_ID      Gene_name               Gene_ID  \\\n",
       "0      ENSMUST00000193812.2  4933401J01Rik  ENSMUSG00000102693.2   \n",
       "1      ENSMUST00000082908.3        Gm26206  ENSMUSG00000064842.3   \n",
       "2      ENSMUST00000070533.5           Xkr4  ENSMUSG00000051951.6   \n",
       "3      ENSMUST00000192857.2        Gm18956  ENSMUSG00000102851.2   \n",
       "4      ENSMUST00000195335.2        Gm37180  ENSMUSG00000103377.2   \n",
       "...                     ...            ...                   ...   \n",
       "84165  ENSMUST00000082419.1         mt-Nd6  ENSMUSG00000064368.1   \n",
       "84166  ENSMUST00000082420.1          mt-Te  ENSMUSG00000064369.1   \n",
       "84167  ENSMUST00000082421.1        mt-Cytb  ENSMUSG00000064370.1   \n",
       "84168  ENSMUST00000082422.1          mt-Tt  ENSMUSG00000064371.1   \n",
       "84169  ENSMUST00000082423.1          mt-Tp  ENSMUSG00000064372.1   \n",
       "\n",
       "                  Gene_type  Gene_lenght    Transcript_Name  \n",
       "0                       TEC         1070  4933401J01Rik-201  \n",
       "1                     snRNA          110        Gm26206-201  \n",
       "2            protein_coding       457017           Xkr4-201  \n",
       "3      processed_pseudogene          480        Gm18956-201  \n",
       "4                       TEC         2819        Gm37180-201  \n",
       "...                     ...          ...                ...  \n",
       "84165        protein_coding          519         mt-Nd6-201  \n",
       "84166               Mt_tRNA           69          mt-Te-201  \n",
       "84167        protein_coding         1144        mt-Cytb-201  \n",
       "84168               Mt_tRNA           67          mt-Tt-201  \n",
       "84169               Mt_tRNA           67          mt-Tp-201  \n",
       "\n",
       "[84170 rows x 6 columns]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tx2gene.dropna(subset='Gene_name')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "aa94c5e8-f50f-4b11-9d98-d67dcfe77bb5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Documents: "
     ]
    },
    {
     "ename": "NameError",
     "evalue": "name 'tx2gene' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[3], line 18\u001b[0m\n\u001b[1;32m     16\u001b[0m \u001b[38;5;28mprint\u001b[39m(path\u001b[38;5;241m.\u001b[39msplit(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m/\u001b[39m\u001b[38;5;124m'\u001b[39m)[\u001b[38;5;241m3\u001b[39m], end\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m: \u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m     17\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m j,srr \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(srr_list):\n\u001b[0;32m---> 18\u001b[0m     df_aux \u001b[38;5;241m=\u001b[39m pd\u001b[38;5;241m.\u001b[39mread_csv(os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(path,srr,\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mquant.sf\u001b[39m\u001b[38;5;124m'\u001b[39m), sep\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;130;01m\\t\u001b[39;00m\u001b[38;5;124m'\u001b[39m)[[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mName\u001b[39m\u001b[38;5;124m'\u001b[39m,\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mTPM\u001b[39m\u001b[38;5;124m'\u001b[39m,\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mEffectiveLength\u001b[39m\u001b[38;5;124m'\u001b[39m,\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mNumReads\u001b[39m\u001b[38;5;124m'\u001b[39m]]\u001b[38;5;241m.\u001b[39mmerge(tx2gene[[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mTranscript_ID\u001b[39m\u001b[38;5;124m'\u001b[39m,\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mGene_name\u001b[39m\u001b[38;5;124m'\u001b[39m]], left_on\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mName\u001b[39m\u001b[38;5;124m'\u001b[39m, right_on\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mTranscript_ID\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m     19\u001b[0m     df_aux \u001b[38;5;241m=\u001b[39m df_aux\u001b[38;5;241m.\u001b[39mgroupby(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mGene_name\u001b[39m\u001b[38;5;124m'\u001b[39m)\u001b[38;5;241m.\u001b[39msum(numeric_only\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)  \n\u001b[1;32m     20\u001b[0m     df_aux[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mcounts_tpm\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mround(df_aux\u001b[38;5;241m.\u001b[39mNumReads,\u001b[38;5;241m0\u001b[39m)\u001b[38;5;241m.\u001b[39mastype(\u001b[38;5;28mint\u001b[39m)\n",
      "\u001b[0;31mNameError\u001b[0m: name 'tx2gene' is not defined"
     ]
    }
   ],
   "source": [
    "salmon_paths = [#'/mnt/d/posttransplant_PRJNA733336_GSE175718/trimmed_salmon_quant/',                \n",
    "                '/home/guilherme/Documents/science/karina_march1/trimmed_salmon_quant/',\n",
    "                # '/mnt/d/pretransplant_PRJNA449520_GSE112927/trimmed_salmon_quant/',\n",
    "                # '/mnt/d/pre_posttransplant_PRJNA342822_GSE86884/trimmed_salmon_quant/',\n",
    "                # '/mnt/d/posttransplant_PRJNA542833_GSE131179/trimmed_salmon_quant/',\n",
    "                # '/mnt/d/pre_posttransplant_PRJNA523370_GSE126805/trimmed_salmon_quant/',\n",
    "               ]\n",
    "tpm = []\n",
    "counts_tpm = []\n",
    "meta = []\n",
    "\n",
    "for path in salmon_paths:\n",
    "    tpm_aux = []\n",
    "    counts_aux = []\n",
    "    srr_list = os.listdir(path)\n",
    "    print(path.split('/')[3], end=': ')\n",
    "    for j,srr in enumerate(srr_list):\n",
    "        df_aux = pd.read_csv(os.path.join(path,srr,'quant.sf'), sep='\\t')[['Name','TPM','EffectiveLength','NumReads']].merge(tx2gene[['Transcript_ID','Gene_name']], left_on='Name', right_on='Transcript_ID')\n",
    "        df_aux = df_aux.groupby('Gene_name').sum(numeric_only=True)  \n",
    "        df_aux['counts_tpm'] = np.round(df_aux.NumReads,0).astype(int)\n",
    "        tpm_aux.append(df_aux.TPM.values)\n",
    "        counts_aux.append(df_aux.counts_tpm.values)\n",
    "        print(j+1, end=' ')\n",
    "    tpm.append(pd.DataFrame(tpm_aux, columns=df_aux.index, index=srr_list))\n",
    "    counts_tpm.append(pd.DataFrame(counts_aux, columns=df_aux.index, index=srr_list))    \n",
    "    # meta.append(pd.read_csv(path.replace('trimmed_salmon_quant/','metadata/SraRunTable.txt')))\n",
    "\n",
    "    # pd.DataFrame(counts_aux, columns=df_aux.index, index=srr_list).to_csv('/mnt/d/counts_leo_colab/'+path.split('/')[3]+'.csv')\n",
    "    # pd.read_csv(path.replace('trimmed_salmon_quant/','metadata/SraRunTable.txt')).to_csv('/mnt/d/counts_leo_colab/metadata_'+path.split('/')[3]+'.csv')\n",
    "    print('\\n')\n",
    "    \n",
    "df_tpm = pd.concat(tpm, axis=0)\n",
    "df_counts = pd.concat(counts_tpm, axis=0)\n",
    "# df_meta = pd.concat(meta, axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 150,
   "id": "dc682450-fe55-426f-bbe4-264fccff24a7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Gene_name</th>\n",
       "      <th>Igkv2-116</th>\n",
       "      <th>Gm56501</th>\n",
       "      <th>Gm5628</th>\n",
       "      <th>Gm15544</th>\n",
       "      <th>Gm15839</th>\n",
       "      <th>Gm15854</th>\n",
       "      <th>Gm5586</th>\n",
       "      <th>Gm15979</th>\n",
       "      <th>Gm16213</th>\n",
       "      <th>Gm16224</th>\n",
       "      <th>...</th>\n",
       "      <th>Gm43577</th>\n",
       "      <th>Gm43545</th>\n",
       "      <th>Gm43535</th>\n",
       "      <th>Gm43533</th>\n",
       "      <th>Gm43520</th>\n",
       "      <th>Ahrr</th>\n",
       "      <th>Gm43513</th>\n",
       "      <th>Gm43511</th>\n",
       "      <th>Gm43540</th>\n",
       "      <th>Ighv5-2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Cond_knock_1_S1</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.060195</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.315743</td>\n",
       "      <td>0.119519</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.919489</td>\n",
       "      <td>0.324220</td>\n",
       "      <td>13.504969</td>\n",
       "      <td>0.058192</td>\n",
       "      <td>42.088236</td>\n",
       "      <td>0.217211</td>\n",
       "      <td>1.198966</td>\n",
       "      <td>1.473935</td>\n",
       "      <td>0.733735</td>\n",
       "      <td>1.730609</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cond_knock_2_S2</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.033847</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.118005</td>\n",
       "      <td>0.067118</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.920563</td>\n",
       "      <td>0.330224</td>\n",
       "      <td>10.196774</td>\n",
       "      <td>0.016378</td>\n",
       "      <td>47.107254</td>\n",
       "      <td>0.245496</td>\n",
       "      <td>1.189274</td>\n",
       "      <td>1.363682</td>\n",
       "      <td>0.342473</td>\n",
       "      <td>1.109382</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cond_knock_3_S3</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.027082</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.189601</td>\n",
       "      <td>0.107619</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.724575</td>\n",
       "      <td>0.236122</td>\n",
       "      <td>8.153527</td>\n",
       "      <td>0.013088</td>\n",
       "      <td>54.004139</td>\n",
       "      <td>0.321595</td>\n",
       "      <td>0.621206</td>\n",
       "      <td>1.262349</td>\n",
       "      <td>0.189345</td>\n",
       "      <td>0.667695</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_1_S4</th>\n",
       "      <td>0.284785</td>\n",
       "      <td>0.019989</td>\n",
       "      <td>0.153100</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.099216</td>\n",
       "      <td>0.066419</td>\n",
       "      <td>0.166151</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.379360</td>\n",
       "      <td>...</td>\n",
       "      <td>0.971010</td>\n",
       "      <td>0.290488</td>\n",
       "      <td>4.212919</td>\n",
       "      <td>0.086433</td>\n",
       "      <td>73.981700</td>\n",
       "      <td>0.356599</td>\n",
       "      <td>1.095843</td>\n",
       "      <td>1.696526</td>\n",
       "      <td>0.404870</td>\n",
       "      <td>0.500077</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_2_S5</th>\n",
       "      <td>0.502837</td>\n",
       "      <td>0.021478</td>\n",
       "      <td>0.158068</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.112231</td>\n",
       "      <td>0.071125</td>\n",
       "      <td>0.384159</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.602157</td>\n",
       "      <td>...</td>\n",
       "      <td>1.044729</td>\n",
       "      <td>0.180770</td>\n",
       "      <td>11.855711</td>\n",
       "      <td>0.015485</td>\n",
       "      <td>73.385408</td>\n",
       "      <td>0.389833</td>\n",
       "      <td>1.420132</td>\n",
       "      <td>1.710662</td>\n",
       "      <td>0.683678</td>\n",
       "      <td>3.154105</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_3_S6</th>\n",
       "      <td>0.266756</td>\n",
       "      <td>0.022736</td>\n",
       "      <td>0.113947</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.112071</td>\n",
       "      <td>0.075232</td>\n",
       "      <td>0.241320</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.425364</td>\n",
       "      <td>...</td>\n",
       "      <td>1.139552</td>\n",
       "      <td>0.243562</td>\n",
       "      <td>19.240684</td>\n",
       "      <td>0.032787</td>\n",
       "      <td>48.823170</td>\n",
       "      <td>0.255505</td>\n",
       "      <td>1.347180</td>\n",
       "      <td>1.614772</td>\n",
       "      <td>0.582438</td>\n",
       "      <td>1.395102</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>6 rows × 19949 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "Gene_name        Igkv2-116   Gm56501    Gm5628   Gm15544   Gm15839   Gm15854  \\\n",
       "Cond_knock_1_S1   0.000000  0.000000  0.000000  0.060195  0.000000  0.000000   \n",
       "Cond_knock_2_S2   0.000000  0.000000  0.000000  0.033847  0.000000  0.000000   \n",
       "Cond_knock_3_S3   0.000000  0.000000  0.000000  0.027082  0.000000  0.000000   \n",
       "Control_1_S4      0.284785  0.019989  0.153100  0.000000  0.099216  0.066419   \n",
       "Control_2_S5      0.502837  0.021478  0.158068  0.000000  0.112231  0.071125   \n",
       "Control_3_S6      0.266756  0.022736  0.113947  0.000000  0.112071  0.075232   \n",
       "\n",
       "Gene_name          Gm5586   Gm15979   Gm16213   Gm16224  ...   Gm43577  \\\n",
       "Cond_knock_1_S1  0.000000  0.315743  0.119519  0.000000  ...  0.919489   \n",
       "Cond_knock_2_S2  0.000000  0.118005  0.067118  0.000000  ...  0.920563   \n",
       "Cond_knock_3_S3  0.000000  0.189601  0.107619  0.000000  ...  0.724575   \n",
       "Control_1_S4     0.166151  0.000000  0.000000  0.379360  ...  0.971010   \n",
       "Control_2_S5     0.384159  0.000000  0.000000  0.602157  ...  1.044729   \n",
       "Control_3_S6     0.241320  0.000000  0.000000  0.425364  ...  1.139552   \n",
       "\n",
       "Gene_name         Gm43545    Gm43535   Gm43533    Gm43520      Ahrr   Gm43513  \\\n",
       "Cond_knock_1_S1  0.324220  13.504969  0.058192  42.088236  0.217211  1.198966   \n",
       "Cond_knock_2_S2  0.330224  10.196774  0.016378  47.107254  0.245496  1.189274   \n",
       "Cond_knock_3_S3  0.236122   8.153527  0.013088  54.004139  0.321595  0.621206   \n",
       "Control_1_S4     0.290488   4.212919  0.086433  73.981700  0.356599  1.095843   \n",
       "Control_2_S5     0.180770  11.855711  0.015485  73.385408  0.389833  1.420132   \n",
       "Control_3_S6     0.243562  19.240684  0.032787  48.823170  0.255505  1.347180   \n",
       "\n",
       "Gene_name         Gm43511   Gm43540   Ighv5-2  \n",
       "Cond_knock_1_S1  1.473935  0.733735  1.730609  \n",
       "Cond_knock_2_S2  1.363682  0.342473  1.109382  \n",
       "Cond_knock_3_S3  1.262349  0.189345  0.667695  \n",
       "Control_1_S4     1.696526  0.404870  0.500077  \n",
       "Control_2_S5     1.710662  0.683678  3.154105  \n",
       "Control_3_S6     1.614772  0.582438  1.395102  \n",
       "\n",
       "[6 rows x 19949 columns]"
      ]
     },
     "execution_count": 150,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_tpm = df_tpm.loc[:,df_tpm.sum()>0]\n",
    "df_tpm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "id": "61328f0d-c829-45cf-8cd0-a7380a28ab03",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>condition</th>\n",
       "      <th>n_cond</th>\n",
       "      <th>sample</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Cond_knock_1_S1</th>\n",
       "      <td>Cond_knock</td>\n",
       "      <td>1</td>\n",
       "      <td>S1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cond_knock_2_S2</th>\n",
       "      <td>Cond_knock</td>\n",
       "      <td>2</td>\n",
       "      <td>S2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cond_knock_3_S3</th>\n",
       "      <td>Cond_knock</td>\n",
       "      <td>3</td>\n",
       "      <td>S3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_1_S4</th>\n",
       "      <td>Control</td>\n",
       "      <td>1</td>\n",
       "      <td>S4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_2_S5</th>\n",
       "      <td>Control</td>\n",
       "      <td>2</td>\n",
       "      <td>S5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_3_S6</th>\n",
       "      <td>Control</td>\n",
       "      <td>3</td>\n",
       "      <td>S6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  condition n_cond sample\n",
       "Cond_knock_1_S1  Cond_knock      1     S1\n",
       "Cond_knock_2_S2  Cond_knock      2     S2\n",
       "Cond_knock_3_S3  Cond_knock      3     S3\n",
       "Control_1_S4        Control      1     S4\n",
       "Control_2_S5        Control      2     S5\n",
       "Control_3_S6        Control      3     S6"
      ]
     },
     "execution_count": 151,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_meta = df_tpm.reset_index()['index'].str.rsplit('_',n=2, expand=True)\n",
    "df_meta.index = df_tpm.index\n",
    "df_meta.columns = ['condition', 'n_cond', 'sample']\n",
    "df_meta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "c3c2e1ab-df97-4cbd-8ae4-e8bbb752378e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# colors_code = {'Ctrl':'#bcbd22','IL_2':'#ff7f0e'}\n",
    "colors_code = {'Control':'black','Cond_knock':'red'}\n",
    "df_meta['Treatment'] = df_meta.condition.map(colors_code)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "3bc913bf-eb4a-4a4d-b2e7-c6a657ae9b5a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Gene_name\n",
       "Igkv2-116    3\n",
       "Gm56501      3\n",
       "Gm5628       3\n",
       "Gm15544      3\n",
       "Gm15839      3\n",
       "            ..\n",
       "Ahrr         6\n",
       "Gm43513      6\n",
       "Gm43511      6\n",
       "Gm43540      6\n",
       "Ighv5-2      6\n",
       "Length: 19949, dtype: int64"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(df_tpm.loc[:,( (df_tpm[(df_tpm.index.str.contains('Cond_knock'))]>0).sum()>=3 ) | ((df_tpm[(df_tpm.index.str.contains('Control'))]>0).sum()>=3)]>0).sum().sort_values()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "3f812249-ed77-492e-b963-0961730371ab",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_tpm = df_tpm[(df_tpm.loc[:,( (df_tpm[(df_tpm.index.str.contains('Cond_knock'))]>0).sum()>=3 ) | ((df_tpm[(df_tpm.index.str.contains('Control'))]>0).sum()>=3)]>0).sum().sort_values().index]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8a082191-1065-40af-9c89-39bb0923e015",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "65e14bef-f9a1-4288-a082-ccdb24bcc5fe",
   "metadata": {},
   "source": [
    "# Network analysis"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "id": "248eaed1-1947-47ab-8244-24e4d637d9d1",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.neighbors import NearestNeighbors\n",
    "from sknetwork.clustering import Louvain"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "id": "2f9d8a69-7921-4619-9857-3862da1ad8e5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Gene_name</th>\n",
       "      <th>Igkv2-116</th>\n",
       "      <th>Gm56501</th>\n",
       "      <th>Gm5628</th>\n",
       "      <th>Gm15544</th>\n",
       "      <th>Gm15839</th>\n",
       "      <th>Gm15854</th>\n",
       "      <th>Gm5586</th>\n",
       "      <th>Gm15979</th>\n",
       "      <th>Gm16213</th>\n",
       "      <th>Gm16224</th>\n",
       "      <th>...</th>\n",
       "      <th>Gm43577</th>\n",
       "      <th>Gm43545</th>\n",
       "      <th>Gm43535</th>\n",
       "      <th>Gm43533</th>\n",
       "      <th>Gm43520</th>\n",
       "      <th>Ahrr</th>\n",
       "      <th>Gm43513</th>\n",
       "      <th>Gm43511</th>\n",
       "      <th>Gm43540</th>\n",
       "      <th>Ighv5-2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Cond_knock_1_S1</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.060195</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.315743</td>\n",
       "      <td>0.119519</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.919489</td>\n",
       "      <td>0.324220</td>\n",
       "      <td>13.504969</td>\n",
       "      <td>0.058192</td>\n",
       "      <td>42.088236</td>\n",
       "      <td>0.217211</td>\n",
       "      <td>1.198966</td>\n",
       "      <td>1.473935</td>\n",
       "      <td>0.733735</td>\n",
       "      <td>1.730609</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cond_knock_2_S2</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.033847</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.118005</td>\n",
       "      <td>0.067118</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.920563</td>\n",
       "      <td>0.330224</td>\n",
       "      <td>10.196774</td>\n",
       "      <td>0.016378</td>\n",
       "      <td>47.107254</td>\n",
       "      <td>0.245496</td>\n",
       "      <td>1.189274</td>\n",
       "      <td>1.363682</td>\n",
       "      <td>0.342473</td>\n",
       "      <td>1.109382</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cond_knock_3_S3</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.027082</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.189601</td>\n",
       "      <td>0.107619</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.724575</td>\n",
       "      <td>0.236122</td>\n",
       "      <td>8.153527</td>\n",
       "      <td>0.013088</td>\n",
       "      <td>54.004139</td>\n",
       "      <td>0.321595</td>\n",
       "      <td>0.621206</td>\n",
       "      <td>1.262349</td>\n",
       "      <td>0.189345</td>\n",
       "      <td>0.667695</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_1_S4</th>\n",
       "      <td>0.284785</td>\n",
       "      <td>0.019989</td>\n",
       "      <td>0.153100</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.099216</td>\n",
       "      <td>0.066419</td>\n",
       "      <td>0.166151</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.379360</td>\n",
       "      <td>...</td>\n",
       "      <td>0.971010</td>\n",
       "      <td>0.290488</td>\n",
       "      <td>4.212919</td>\n",
       "      <td>0.086433</td>\n",
       "      <td>73.981700</td>\n",
       "      <td>0.356599</td>\n",
       "      <td>1.095843</td>\n",
       "      <td>1.696526</td>\n",
       "      <td>0.404870</td>\n",
       "      <td>0.500077</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_2_S5</th>\n",
       "      <td>0.502837</td>\n",
       "      <td>0.021478</td>\n",
       "      <td>0.158068</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.112231</td>\n",
       "      <td>0.071125</td>\n",
       "      <td>0.384159</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.602157</td>\n",
       "      <td>...</td>\n",
       "      <td>1.044729</td>\n",
       "      <td>0.180770</td>\n",
       "      <td>11.855711</td>\n",
       "      <td>0.015485</td>\n",
       "      <td>73.385408</td>\n",
       "      <td>0.389833</td>\n",
       "      <td>1.420132</td>\n",
       "      <td>1.710662</td>\n",
       "      <td>0.683678</td>\n",
       "      <td>3.154105</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_3_S6</th>\n",
       "      <td>0.266756</td>\n",
       "      <td>0.022736</td>\n",
       "      <td>0.113947</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.112071</td>\n",
       "      <td>0.075232</td>\n",
       "      <td>0.241320</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.425364</td>\n",
       "      <td>...</td>\n",
       "      <td>1.139552</td>\n",
       "      <td>0.243562</td>\n",
       "      <td>19.240684</td>\n",
       "      <td>0.032787</td>\n",
       "      <td>48.823170</td>\n",
       "      <td>0.255505</td>\n",
       "      <td>1.347180</td>\n",
       "      <td>1.614772</td>\n",
       "      <td>0.582438</td>\n",
       "      <td>1.395102</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>6 rows × 19949 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "Gene_name        Igkv2-116   Gm56501    Gm5628   Gm15544   Gm15839   Gm15854  \\\n",
       "Cond_knock_1_S1   0.000000  0.000000  0.000000  0.060195  0.000000  0.000000   \n",
       "Cond_knock_2_S2   0.000000  0.000000  0.000000  0.033847  0.000000  0.000000   \n",
       "Cond_knock_3_S3   0.000000  0.000000  0.000000  0.027082  0.000000  0.000000   \n",
       "Control_1_S4      0.284785  0.019989  0.153100  0.000000  0.099216  0.066419   \n",
       "Control_2_S5      0.502837  0.021478  0.158068  0.000000  0.112231  0.071125   \n",
       "Control_3_S6      0.266756  0.022736  0.113947  0.000000  0.112071  0.075232   \n",
       "\n",
       "Gene_name          Gm5586   Gm15979   Gm16213   Gm16224  ...   Gm43577  \\\n",
       "Cond_knock_1_S1  0.000000  0.315743  0.119519  0.000000  ...  0.919489   \n",
       "Cond_knock_2_S2  0.000000  0.118005  0.067118  0.000000  ...  0.920563   \n",
       "Cond_knock_3_S3  0.000000  0.189601  0.107619  0.000000  ...  0.724575   \n",
       "Control_1_S4     0.166151  0.000000  0.000000  0.379360  ...  0.971010   \n",
       "Control_2_S5     0.384159  0.000000  0.000000  0.602157  ...  1.044729   \n",
       "Control_3_S6     0.241320  0.000000  0.000000  0.425364  ...  1.139552   \n",
       "\n",
       "Gene_name         Gm43545    Gm43535   Gm43533    Gm43520      Ahrr   Gm43513  \\\n",
       "Cond_knock_1_S1  0.324220  13.504969  0.058192  42.088236  0.217211  1.198966   \n",
       "Cond_knock_2_S2  0.330224  10.196774  0.016378  47.107254  0.245496  1.189274   \n",
       "Cond_knock_3_S3  0.236122   8.153527  0.013088  54.004139  0.321595  0.621206   \n",
       "Control_1_S4     0.290488   4.212919  0.086433  73.981700  0.356599  1.095843   \n",
       "Control_2_S5     0.180770  11.855711  0.015485  73.385408  0.389833  1.420132   \n",
       "Control_3_S6     0.243562  19.240684  0.032787  48.823170  0.255505  1.347180   \n",
       "\n",
       "Gene_name         Gm43511   Gm43540   Ighv5-2  \n",
       "Cond_knock_1_S1  1.473935  0.733735  1.730609  \n",
       "Cond_knock_2_S2  1.363682  0.342473  1.109382  \n",
       "Cond_knock_3_S3  1.262349  0.189345  0.667695  \n",
       "Control_1_S4     1.696526  0.404870  0.500077  \n",
       "Control_2_S5     1.710662  0.683678  3.154105  \n",
       "Control_3_S6     1.614772  0.582438  1.395102  \n",
       "\n",
       "[6 rows x 19949 columns]"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_vsd = pd.read_csv('/home/guilherme/Documents/science/karina_march1/vsd_network_communities.csv',\n",
    "                     index_col=0).loc[:,:'Control_3_S6'].T\n",
    "df_vsd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "ff41831d-d4cc-4323-8eb5-509fdd53e28e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Gene_name</th>\n",
       "      <th>Igkv2-116</th>\n",
       "      <th>Gm56501</th>\n",
       "      <th>Gm5628</th>\n",
       "      <th>Gm15544</th>\n",
       "      <th>Gm15839</th>\n",
       "      <th>Gm15854</th>\n",
       "      <th>Gm5586</th>\n",
       "      <th>Gm15979</th>\n",
       "      <th>Gm16213</th>\n",
       "      <th>Gm16224</th>\n",
       "      <th>...</th>\n",
       "      <th>Gm43577</th>\n",
       "      <th>Gm43545</th>\n",
       "      <th>Gm43535</th>\n",
       "      <th>Gm43533</th>\n",
       "      <th>Gm43520</th>\n",
       "      <th>Ahrr</th>\n",
       "      <th>Gm43513</th>\n",
       "      <th>Gm43511</th>\n",
       "      <th>Gm43540</th>\n",
       "      <th>Ighv5-2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Cond_knock_1_S1</th>\n",
       "      <td>-0.918092</td>\n",
       "      <td>-0.997259</td>\n",
       "      <td>-0.981156</td>\n",
       "      <td>1.772345</td>\n",
       "      <td>-0.996818</td>\n",
       "      <td>-0.997433</td>\n",
       "      <td>-0.899905</td>\n",
       "      <td>1.781936</td>\n",
       "      <td>1.367319</td>\n",
       "      <td>-0.960527</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.264857</td>\n",
       "      <td>1.071982</td>\n",
       "      <td>0.497409</td>\n",
       "      <td>0.782971</td>\n",
       "      <td>-1.149415</td>\n",
       "      <td>-1.285867</td>\n",
       "      <td>0.207793</td>\n",
       "      <td>-0.276032</td>\n",
       "      <td>1.261998</td>\n",
       "      <td>0.347225</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cond_knock_2_S2</th>\n",
       "      <td>-0.918092</td>\n",
       "      <td>-0.997259</td>\n",
       "      <td>-0.981156</td>\n",
       "      <td>0.605125</td>\n",
       "      <td>-0.996818</td>\n",
       "      <td>-0.997433</td>\n",
       "      <td>-0.899905</td>\n",
       "      <td>0.118712</td>\n",
       "      <td>0.350681</td>\n",
       "      <td>-0.960527</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.256448</td>\n",
       "      <td>1.185583</td>\n",
       "      <td>-0.214671</td>\n",
       "      <td>-0.766334</td>\n",
       "      <td>-0.750918</td>\n",
       "      <td>-0.834031</td>\n",
       "      <td>0.170172</td>\n",
       "      <td>-0.932122</td>\n",
       "      <td>-0.759074</td>\n",
       "      <td>-0.361290</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cond_knock_3_S3</th>\n",
       "      <td>-0.918092</td>\n",
       "      <td>-0.997259</td>\n",
       "      <td>-0.981156</td>\n",
       "      <td>0.305435</td>\n",
       "      <td>-0.996818</td>\n",
       "      <td>-0.997433</td>\n",
       "      <td>-0.899905</td>\n",
       "      <td>0.720924</td>\n",
       "      <td>1.136446</td>\n",
       "      <td>-0.960527</td>\n",
       "      <td>...</td>\n",
       "      <td>-1.790818</td>\n",
       "      <td>-0.594920</td>\n",
       "      <td>-0.654474</td>\n",
       "      <td>-0.888236</td>\n",
       "      <td>-0.203324</td>\n",
       "      <td>0.381604</td>\n",
       "      <td>-2.034851</td>\n",
       "      <td>-1.535131</td>\n",
       "      <td>-1.550060</td>\n",
       "      <td>-0.865037</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_1_S4</th>\n",
       "      <td>0.569755</td>\n",
       "      <td>0.865664</td>\n",
       "      <td>1.138952</td>\n",
       "      <td>-0.894302</td>\n",
       "      <td>0.837397</td>\n",
       "      <td>0.870686</td>\n",
       "      <td>0.233353</td>\n",
       "      <td>-0.873857</td>\n",
       "      <td>-0.951482</td>\n",
       "      <td>0.593488</td>\n",
       "      <td>...</td>\n",
       "      <td>0.138496</td>\n",
       "      <td>0.433739</td>\n",
       "      <td>-1.502679</td>\n",
       "      <td>1.829365</td>\n",
       "      <td>1.382840</td>\n",
       "      <td>0.940772</td>\n",
       "      <td>-0.192491</td>\n",
       "      <td>1.048555</td>\n",
       "      <td>-0.436761</td>\n",
       "      <td>-1.056207</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_2_S5</th>\n",
       "      <td>1.708958</td>\n",
       "      <td>1.004435</td>\n",
       "      <td>1.207748</td>\n",
       "      <td>-0.894302</td>\n",
       "      <td>1.078007</td>\n",
       "      <td>1.003049</td>\n",
       "      <td>1.720309</td>\n",
       "      <td>-0.873857</td>\n",
       "      <td>-0.951482</td>\n",
       "      <td>1.506156</td>\n",
       "      <td>...</td>\n",
       "      <td>0.715634</td>\n",
       "      <td>-1.642235</td>\n",
       "      <td>0.142410</td>\n",
       "      <td>-0.799422</td>\n",
       "      <td>1.335496</td>\n",
       "      <td>1.471665</td>\n",
       "      <td>1.066275</td>\n",
       "      <td>1.132675</td>\n",
       "      <td>1.003428</td>\n",
       "      <td>1.970733</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_3_S6</th>\n",
       "      <td>0.475563</td>\n",
       "      <td>1.121677</td>\n",
       "      <td>0.596767</td>\n",
       "      <td>-0.894302</td>\n",
       "      <td>1.075049</td>\n",
       "      <td>1.118563</td>\n",
       "      <td>0.746054</td>\n",
       "      <td>-0.873857</td>\n",
       "      <td>-0.951482</td>\n",
       "      <td>0.781939</td>\n",
       "      <td>...</td>\n",
       "      <td>1.457993</td>\n",
       "      <td>-0.454148</td>\n",
       "      <td>1.732005</td>\n",
       "      <td>-0.158343</td>\n",
       "      <td>-0.614679</td>\n",
       "      <td>-0.674143</td>\n",
       "      <td>0.783103</td>\n",
       "      <td>0.562056</td>\n",
       "      <td>0.480470</td>\n",
       "      <td>-0.035424</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>6 rows × 19949 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "Gene_name        Igkv2-116   Gm56501    Gm5628   Gm15544   Gm15839   Gm15854  \\\n",
       "Cond_knock_1_S1  -0.918092 -0.997259 -0.981156  1.772345 -0.996818 -0.997433   \n",
       "Cond_knock_2_S2  -0.918092 -0.997259 -0.981156  0.605125 -0.996818 -0.997433   \n",
       "Cond_knock_3_S3  -0.918092 -0.997259 -0.981156  0.305435 -0.996818 -0.997433   \n",
       "Control_1_S4      0.569755  0.865664  1.138952 -0.894302  0.837397  0.870686   \n",
       "Control_2_S5      1.708958  1.004435  1.207748 -0.894302  1.078007  1.003049   \n",
       "Control_3_S6      0.475563  1.121677  0.596767 -0.894302  1.075049  1.118563   \n",
       "\n",
       "Gene_name          Gm5586   Gm15979   Gm16213   Gm16224  ...   Gm43577  \\\n",
       "Cond_knock_1_S1 -0.899905  1.781936  1.367319 -0.960527  ... -0.264857   \n",
       "Cond_knock_2_S2 -0.899905  0.118712  0.350681 -0.960527  ... -0.256448   \n",
       "Cond_knock_3_S3 -0.899905  0.720924  1.136446 -0.960527  ... -1.790818   \n",
       "Control_1_S4     0.233353 -0.873857 -0.951482  0.593488  ...  0.138496   \n",
       "Control_2_S5     1.720309 -0.873857 -0.951482  1.506156  ...  0.715634   \n",
       "Control_3_S6     0.746054 -0.873857 -0.951482  0.781939  ...  1.457993   \n",
       "\n",
       "Gene_name         Gm43545   Gm43535   Gm43533   Gm43520      Ahrr   Gm43513  \\\n",
       "Cond_knock_1_S1  1.071982  0.497409  0.782971 -1.149415 -1.285867  0.207793   \n",
       "Cond_knock_2_S2  1.185583 -0.214671 -0.766334 -0.750918 -0.834031  0.170172   \n",
       "Cond_knock_3_S3 -0.594920 -0.654474 -0.888236 -0.203324  0.381604 -2.034851   \n",
       "Control_1_S4     0.433739 -1.502679  1.829365  1.382840  0.940772 -0.192491   \n",
       "Control_2_S5    -1.642235  0.142410 -0.799422  1.335496  1.471665  1.066275   \n",
       "Control_3_S6    -0.454148  1.732005 -0.158343 -0.614679 -0.674143  0.783103   \n",
       "\n",
       "Gene_name         Gm43511   Gm43540   Ighv5-2  \n",
       "Cond_knock_1_S1 -0.276032  1.261998  0.347225  \n",
       "Cond_knock_2_S2 -0.932122 -0.759074 -0.361290  \n",
       "Cond_knock_3_S3 -1.535131 -1.550060 -0.865037  \n",
       "Control_1_S4     1.048555 -0.436761 -1.056207  \n",
       "Control_2_S5     1.132675  1.003428  1.970733  \n",
       "Control_3_S6     0.562056  0.480470 -0.035424  \n",
       "\n",
       "[6 rows x 19949 columns]"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_vsd_scaler = StandardScaler(with_std=True,with_mean=True).fit_transform(df_vsd)\n",
    "df_vsd_scaler = pd.DataFrame(df_vsd_scaler, columns=df_vsd.columns, index=df_vsd.index)\n",
    "df_vsd_scaler"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "5f437d5a-f2dc-4bc3-863f-a021b350dacc",
   "metadata": {},
   "outputs": [],
   "source": [
    "pca = PCA(n_components=3)\n",
    "df_vsd_pca = pca.fit_transform(df_vsd_scaler)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "d8c0f936-62e3-4bd4-8946-6c44e2344263",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Cond_knock_1_S1</th>\n",
       "      <td>-31.808712</td>\n",
       "      <td>-78.918080</td>\n",
       "      <td>-11.081653</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cond_knock_2_S2</th>\n",
       "      <td>-35.758724</td>\n",
       "      <td>-93.016622</td>\n",
       "      <td>-17.243699</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cond_knock_3_S3</th>\n",
       "      <td>-154.805406</td>\n",
       "      <td>76.843973</td>\n",
       "      <td>29.136509</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_1_S4</th>\n",
       "      <td>71.827590</td>\n",
       "      <td>27.157293</td>\n",
       "      <td>3.278065</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_2_S5</th>\n",
       "      <td>94.994371</td>\n",
       "      <td>8.493648</td>\n",
       "      <td>89.573407</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_3_S6</th>\n",
       "      <td>55.550881</td>\n",
       "      <td>59.439789</td>\n",
       "      <td>-93.662629</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                          0          1          2\n",
       "Cond_knock_1_S1  -31.808712 -78.918080 -11.081653\n",
       "Cond_knock_2_S2  -35.758724 -93.016622 -17.243699\n",
       "Cond_knock_3_S3 -154.805406  76.843973  29.136509\n",
       "Control_1_S4      71.827590  27.157293   3.278065\n",
       "Control_2_S5      94.994371   8.493648  89.573407\n",
       "Control_3_S6      55.550881  59.439789 -93.662629"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.DataFrame(df_vsd_pca, index=df_vsd.index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "a259e51c-b45f-4b4c-957f-8db01b03f34d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.36362915, 0.20993451, 0.15101771])"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pca.explained_variance_ratio_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "id": "7e8cc28a-2679-4bf4-bbab-60913dae6d4d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 700x700 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(7,7\n",
    "                         ))\n",
    "ax = fig.add_subplot(111, projection='3d')\n",
    "ax.scatter(df_vsd_pca[:3,0], df_vsd_pca[:3,1], df_vsd_pca[:3,2], label='knock', s=150)\n",
    "ax.scatter(df_vsd_pca[3:,0], df_vsd_pca[3:,1], df_vsd_pca[3:,2], label='control', s=150)\n",
    "ax.set_xlabel('PC1 (36.36%)')\n",
    "ax.set_ylabel('PC2 (21.00%)')\n",
    "ax.set_zlabel('PC3 (15.1%)')\n",
    "ax.set_proj_type('persp')\n",
    "\n",
    "fig.tight_layout()\n",
    "fig.savefig('/home/guilherme/Documents/science/karina_march1/PCA_3d.pdf', format='pdf', dpi=300, bbox_inches='tight', pad_inches=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "b59ce0e7-9cfd-429a-ab23-32240091c4e1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x7f81ac7a7390>"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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1ytj+jTMlJSU6KWXXuqwf8uWLbr11lslhQLPgw8+qHfffVepqam67777tGLFiojLRLW1tZo9e7Y++ugjDRw4UA888ICeeOIJK27L9vv98ng8am5u5i9KH2KcY4exjg3GOTYY59jo63Hu0zAD/qLECuMcO4x1bDDOscE4x0ZfjzOfzQQAAKxGmOljbrdbixYtirhsht7HOMcOYx0bjHNsMM6x0dfjzGUmAABgNWZmAACA1QgzAADAaoQZAABgNcIMAACwGmGmFy1fvlxFRUW64oorNGDAgE5rOvtgzvLy8oia2tpaFRcXKzU1Vd/4xje0dOnSHj+X4nISzTjX1dVp6tSp6t+/v7xerx5++GG1trZG1DDOFy43N7fD7++jjz4aURPN2KN7q1evVl5enlJSUjRy5Mjw09NxcTr7gGSfzxc+bozR4sWLlZWVpdTUVN16663atWuXgx3b449//KOmTp2qrKwsuVwuvfHGGxHHoxnbQCCghx56SF6vV/3799edd96pL7744oL6IMz0otbWVt1zzz3653/+527rKioq1NDQEN5mzJgRPub3+zV+/HhlZWWpurpazz33nFasWKFVq1b1dfvW6Gmc29vbNWXKFJ08eVLbtm3TunXr9J//+Z8RH3/BOF+8pUuXRvz+Pv744+Fj0Yw9urd+/XrNmTNHCxcuVE1NjcaOHavJkyerrq7O6dasdsMNN0T83tbW1oaPPfPMM1q1apWef/55VVdXy+fzafz48eHP9UPXTp48qZtuuknPP/98p8ejGds5c+bo9ddf17p167Rt2zZ99dVXuuOOO9Te3h59Iwa9rqKiwng8nk6PSTKvv/56l9+7evVq4/F4zOnTp8P7ysrKTFZWlgkGg73cqd26Gue33nrLJCQkmC+//DK879///d+N2+02zc3NxhjG+WLl5OSYX/7yl10ej2bs0b2//du/NQ888EDEvuuuu848+uijDnVkv0WLFpmbbrqp02PBYND4fD7z1FNPhfedPn3aeDweU15eHqMOLw3nv79FM7YnTpwwSUlJZt26deGaL7/80iQkJJg//OEPUf9sZmYcUFpaKq/Xq9GjR6u8vFzBYDB8rKqqSsXFxREPFpo4caIOHTqkAwcOONCtfaqqqpSfn6+srKzwvokTJyoQCGjHjh3hGsb54jz99NMaPHiwRowYoeXLl0dcQopm7NG11tZW7dixQxMmTIjYP2HCBH3wwQcOdXVp2LNnj7KyspSXl6fp06dr3759kqT9+/ersbExYszdbreKi4sZ868pmrHdsWOH2traImqysrKUn59/QePfr/faRjSWLVum22+/XampqXrnnXc0b948HTlyJDxV39jYqNzc3IjvycjICB/Ly8uLdcvWaWxsDI/ZWQMHDlRycrIaGxvDNYzzhfvpT3+qm2++WQMHDtRHH32kBQsWaP/+/VqzZo2k6MYeXTty5Ija29s7jGFGRgbj9zWMGTNGL7/8sq655hodPnxYTz75pIqKirRr167wuHY25gcPHnSi3UtGNGPb2Nio5ORkDRw4sEPNhfzOMzPTg84Wjp2/ffzxx1Gf7/HHH1dhYaFGjBihefPmaenSpXr22Wcjas7/NHDzl0WpNnxK+MXq7XHubKyMMRH7L8dx7syFjP0jjzyi4uJifec739HMmTNVXl6utWvX6ujRo+HzRTP26F5nv5uM38WbPHmyvve97+nGG2/U3//932vjxo2SpJdeeilcw5j3nYsZ2wsdf2ZmelBaWqrp06d3W3P+/+FfiIKCAvn9fh0+fFgZGRny+Xwd0mhTU5Okjun2UtKb4+zz+fThhx9G7Dt+/Lja2trCY3i5jnNnvs7YFxQUSJL27t2rwYMHRzX26JrX61ViYmKnv5uMX+/p37+/brzxRu3Zs0fTpk2TFJohyMzMDNcw5l/f2TvGuhtbn8+n1tZWHT9+PGJ2pqmpSUVFRVH/LMJMD7xer7xeb5+dv6amRikpKeFbjAsLC/XYY4+ptbVVycnJkqRNmzYpKyvra4WmeNeb41xYWKjly5eroaEh/Bdo06ZNcrvdGjlyZLjmchznznydsa+pqZGk8DhHM/boWnJyskaOHKnKykrddddd4f2VlZX6x3/8Rwc7u7QEAgF98sknGjt2rPLy8uTz+VRZWam/+Zu/kRRau/Tee+/p6aefdrhTu0UztiNHjlRSUpIqKyv1/e9/X5LU0NCgnTt36plnnon+h138umWc7+DBg6ampsYsWbLEXHnllaampsbU1NSYlpYWY4wxGzZsML/5zW9MbW2t2bt3r/nXf/1Xk56ebh5++OHwOU6cOGEyMjLMvffea2pra81rr71m0tPTzYoVK5z6Y8Wdnsb5zJkzJj8/39x+++3mT3/6k9m8ebMZNmyYKS0tDZ+Dcb5wH3zwgVm1apWpqakx+/btM+vXrzdZWVnmzjvvDNdEM/bo3rp160xSUpJZu3at2b17t5kzZ47p37+/OXDggNOtWWvevHlm69atZt++fWb79u3mjjvuMGlpaeExfeqpp4zH4zGvvfaaqa2tNffee6/JzMw0fr/f4c7jX0tLS/jfYEnhfyMOHjxojIlubB944AEzbNgws3nzZvOnP/3J3Hbbbeamm24yZ86ciboPwkwvmjFjhpHUYduyZYsxxpi3337bjBgxwlx55ZXmiiuuMPn5+eZXv/qVaWtrizjP//zP/5ixY8cat9ttfD6fWbx4MbcLn6OncTYmFHimTJliUlNTzaBBg0xpaWnEbdjGMM4XaseOHWbMmDHG4/GYlJQUc+2115pFixaZkydPRtRFM/bo3gsvvGBycnJMcnKyufnmm817773ndEtW+8EPfmAyMzNNUlKSycrKMnfffbfZtWtX+HgwGDSLFi0yPp/PuN1u893vftfU1tY62LE9tmzZ0um/xzNmzDDGRDe2p06dMqWlpWbQoEEmNTXV3HHHHaauru6C+nAZwyNPAQCAvbibCQAAWI0wAwAArEaYAQAAViPMAAAAqxFmAACA1QgzAADAaoQZAABgNcIMAACwGmEGAABYjTADAACsRpgBAABWI8wAAACr/X/wFFTDHxQAsAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "ax = fig.add_subplot(111)\n",
    "ax.scatter(df_vsd_pca[:3,0], df_vsd_pca[:3,1], label='knock', s=50)\n",
    "ax.scatter(df_vsd_pca[3:,0], df_vsd_pca[3:,1], label='knock', s=50)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 306,
   "id": "ab79e7a3-cf7a-47f5-8f60-a798795ec15e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Gene_name</th>\n",
       "      <th>Igkv2-116</th>\n",
       "      <th>Gm56501</th>\n",
       "      <th>Gm5628</th>\n",
       "      <th>Gm15544</th>\n",
       "      <th>Gm15839</th>\n",
       "      <th>Gm15854</th>\n",
       "      <th>Gm5586</th>\n",
       "      <th>Gm15979</th>\n",
       "      <th>Gm16213</th>\n",
       "      <th>Gm16224</th>\n",
       "      <th>...</th>\n",
       "      <th>Gm43577</th>\n",
       "      <th>Gm43545</th>\n",
       "      <th>Gm43535</th>\n",
       "      <th>Gm43533</th>\n",
       "      <th>Gm43520</th>\n",
       "      <th>Ahrr</th>\n",
       "      <th>Gm43513</th>\n",
       "      <th>Gm43511</th>\n",
       "      <th>Gm43540</th>\n",
       "      <th>Ighv5-2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Cond_knock_1_S1</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.060195</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.315743</td>\n",
       "      <td>0.119519</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.919489</td>\n",
       "      <td>0.324220</td>\n",
       "      <td>13.504969</td>\n",
       "      <td>0.058192</td>\n",
       "      <td>42.088236</td>\n",
       "      <td>0.217211</td>\n",
       "      <td>1.198966</td>\n",
       "      <td>1.473935</td>\n",
       "      <td>0.733735</td>\n",
       "      <td>1.730609</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cond_knock_2_S2</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.033847</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.118005</td>\n",
       "      <td>0.067118</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.920563</td>\n",
       "      <td>0.330224</td>\n",
       "      <td>10.196774</td>\n",
       "      <td>0.016378</td>\n",
       "      <td>47.107254</td>\n",
       "      <td>0.245496</td>\n",
       "      <td>1.189274</td>\n",
       "      <td>1.363682</td>\n",
       "      <td>0.342473</td>\n",
       "      <td>1.109382</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cond_knock_3_S3</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.027082</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.189601</td>\n",
       "      <td>0.107619</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.724575</td>\n",
       "      <td>0.236122</td>\n",
       "      <td>8.153527</td>\n",
       "      <td>0.013088</td>\n",
       "      <td>54.004139</td>\n",
       "      <td>0.321595</td>\n",
       "      <td>0.621206</td>\n",
       "      <td>1.262349</td>\n",
       "      <td>0.189345</td>\n",
       "      <td>0.667695</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_1_S4</th>\n",
       "      <td>0.284785</td>\n",
       "      <td>0.019989</td>\n",
       "      <td>0.153100</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.099216</td>\n",
       "      <td>0.066419</td>\n",
       "      <td>0.166151</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.379360</td>\n",
       "      <td>...</td>\n",
       "      <td>0.971010</td>\n",
       "      <td>0.290488</td>\n",
       "      <td>4.212919</td>\n",
       "      <td>0.086433</td>\n",
       "      <td>73.981700</td>\n",
       "      <td>0.356599</td>\n",
       "      <td>1.095843</td>\n",
       "      <td>1.696526</td>\n",
       "      <td>0.404870</td>\n",
       "      <td>0.500077</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_2_S5</th>\n",
       "      <td>0.502837</td>\n",
       "      <td>0.021478</td>\n",
       "      <td>0.158068</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.112231</td>\n",
       "      <td>0.071125</td>\n",
       "      <td>0.384159</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.602157</td>\n",
       "      <td>...</td>\n",
       "      <td>1.044729</td>\n",
       "      <td>0.180770</td>\n",
       "      <td>11.855711</td>\n",
       "      <td>0.015485</td>\n",
       "      <td>73.385408</td>\n",
       "      <td>0.389833</td>\n",
       "      <td>1.420132</td>\n",
       "      <td>1.710662</td>\n",
       "      <td>0.683678</td>\n",
       "      <td>3.154105</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_3_S6</th>\n",
       "      <td>0.266756</td>\n",
       "      <td>0.022736</td>\n",
       "      <td>0.113947</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.112071</td>\n",
       "      <td>0.075232</td>\n",
       "      <td>0.241320</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.425364</td>\n",
       "      <td>...</td>\n",
       "      <td>1.139552</td>\n",
       "      <td>0.243562</td>\n",
       "      <td>19.240684</td>\n",
       "      <td>0.032787</td>\n",
       "      <td>48.823170</td>\n",
       "      <td>0.255505</td>\n",
       "      <td>1.347180</td>\n",
       "      <td>1.614772</td>\n",
       "      <td>0.582438</td>\n",
       "      <td>1.395102</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>6 rows × 19949 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "Gene_name        Igkv2-116   Gm56501    Gm5628   Gm15544   Gm15839   Gm15854  \\\n",
       "Cond_knock_1_S1   0.000000  0.000000  0.000000  0.060195  0.000000  0.000000   \n",
       "Cond_knock_2_S2   0.000000  0.000000  0.000000  0.033847  0.000000  0.000000   \n",
       "Cond_knock_3_S3   0.000000  0.000000  0.000000  0.027082  0.000000  0.000000   \n",
       "Control_1_S4      0.284785  0.019989  0.153100  0.000000  0.099216  0.066419   \n",
       "Control_2_S5      0.502837  0.021478  0.158068  0.000000  0.112231  0.071125   \n",
       "Control_3_S6      0.266756  0.022736  0.113947  0.000000  0.112071  0.075232   \n",
       "\n",
       "Gene_name          Gm5586   Gm15979   Gm16213   Gm16224  ...   Gm43577  \\\n",
       "Cond_knock_1_S1  0.000000  0.315743  0.119519  0.000000  ...  0.919489   \n",
       "Cond_knock_2_S2  0.000000  0.118005  0.067118  0.000000  ...  0.920563   \n",
       "Cond_knock_3_S3  0.000000  0.189601  0.107619  0.000000  ...  0.724575   \n",
       "Control_1_S4     0.166151  0.000000  0.000000  0.379360  ...  0.971010   \n",
       "Control_2_S5     0.384159  0.000000  0.000000  0.602157  ...  1.044729   \n",
       "Control_3_S6     0.241320  0.000000  0.000000  0.425364  ...  1.139552   \n",
       "\n",
       "Gene_name         Gm43545    Gm43535   Gm43533    Gm43520      Ahrr   Gm43513  \\\n",
       "Cond_knock_1_S1  0.324220  13.504969  0.058192  42.088236  0.217211  1.198966   \n",
       "Cond_knock_2_S2  0.330224  10.196774  0.016378  47.107254  0.245496  1.189274   \n",
       "Cond_knock_3_S3  0.236122   8.153527  0.013088  54.004139  0.321595  0.621206   \n",
       "Control_1_S4     0.290488   4.212919  0.086433  73.981700  0.356599  1.095843   \n",
       "Control_2_S5     0.180770  11.855711  0.015485  73.385408  0.389833  1.420132   \n",
       "Control_3_S6     0.243562  19.240684  0.032787  48.823170  0.255505  1.347180   \n",
       "\n",
       "Gene_name         Gm43511   Gm43540   Ighv5-2  \n",
       "Cond_knock_1_S1  1.473935  0.733735  1.730609  \n",
       "Cond_knock_2_S2  1.363682  0.342473  1.109382  \n",
       "Cond_knock_3_S3  1.262349  0.189345  0.667695  \n",
       "Control_1_S4     1.696526  0.404870  0.500077  \n",
       "Control_2_S5     1.710662  0.683678  3.154105  \n",
       "Control_3_S6     1.614772  0.582438  1.395102  \n",
       "\n",
       "[6 rows x 19949 columns]"
      ]
     },
     "execution_count": 306,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_tpm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "456bc95d-4010-4189-8158-4607cda10f44",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "#.0:12.1061692237854\n"
     ]
    }
   ],
   "source": [
    "t1 = time.time()\n",
    "# to_drop_corr_imm = dict()\n",
    "# for c in adata_GSE120649.var.columns:\n",
    "corr_imm = df_tpm.corr(method='pearson')\n",
    "print('#', end='')\n",
    "upper = corr_imm.where(np.triu(np.ones(corr_imm.shape), k=1).astype(np.bool_))\n",
    "to_drop_corr_imm = [column for column in upper.columns if any(upper[column].abs() >= .95)]\n",
    "# adata_GSE120649.var.loc[to_drop_corr_imm[c],c] = False\n",
    "print('.', end='')\n",
    "# adata_GSE120649.var = adata_GSE120649.var.loc[:,(adata_GSE120649.var.sum()>=5).values]\n",
    "t2 = time.time()\n",
    "print(int((t2-t1)//60), (t2-t1)%60, sep=':')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "d8ee13ec-762c-495f-8b1a-0bbb9405c874",
   "metadata": {},
   "outputs": [],
   "source": [
    "to_keep_corr = list(set(df_tpm.columns).difference(set(to_drop_corr_imm)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "c7f59ee6-5755-4ee1-ae1a-cc7ddffb681a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Gene_name</th>\n",
       "      <th>Sema3f</th>\n",
       "      <th>Gm8225</th>\n",
       "      <th>Gm26608</th>\n",
       "      <th>A230072C01Rik</th>\n",
       "      <th>Gm2427</th>\n",
       "      <th>Gm34590</th>\n",
       "      <th>Gm12017</th>\n",
       "      <th>Gm45469</th>\n",
       "      <th>Gm56501</th>\n",
       "      <th>She</th>\n",
       "      <th>...</th>\n",
       "      <th>Cks1brt</th>\n",
       "      <th>Gm16574</th>\n",
       "      <th>Gm29485</th>\n",
       "      <th>Gm57055</th>\n",
       "      <th>Gm20531</th>\n",
       "      <th>Gm20479</th>\n",
       "      <th>Efcab8</th>\n",
       "      <th>Gm26885</th>\n",
       "      <th>Gm15821</th>\n",
       "      <th>Igkv2-116</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Cond_knock_1_S1</th>\n",
       "      <td>0.042506</td>\n",
       "      <td>0.061661</td>\n",
       "      <td>0.045534</td>\n",
       "      <td>0.103438</td>\n",
       "      <td>0.088369</td>\n",
       "      <td>0.318203</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.124011</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.014345</td>\n",
       "      <td>...</td>\n",
       "      <td>0.038128</td>\n",
       "      <td>0.074753</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.179821</td>\n",
       "      <td>0.102594</td>\n",
       "      <td>0.547891</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.128108</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cond_knock_2_S2</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.140195</td>\n",
       "      <td>0.025620</td>\n",
       "      <td>0.953007</td>\n",
       "      <td>0.246063</td>\n",
       "      <td>0.178756</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.069469</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.008078</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.167802</td>\n",
       "      <td>0.837306</td>\n",
       "      <td>0.269283</td>\n",
       "      <td>0.038460</td>\n",
       "      <td>2.727200</td>\n",
       "      <td>0.055080</td>\n",
       "      <td>0.041834</td>\n",
       "      <td>0.089505</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cond_knock_3_S3</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.130243</td>\n",
       "      <td>0.020485</td>\n",
       "      <td>0.636317</td>\n",
       "      <td>0.119801</td>\n",
       "      <td>0.047747</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.055834</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.025807</td>\n",
       "      <td>...</td>\n",
       "      <td>0.051224</td>\n",
       "      <td>0.067329</td>\n",
       "      <td>0.335589</td>\n",
       "      <td>0.053972</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.547701</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.107482</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_1_S4</th>\n",
       "      <td>0.018086</td>\n",
       "      <td>0.122847</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.520317</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.105326</td>\n",
       "      <td>0.099985</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.019989</td>\n",
       "      <td>0.028394</td>\n",
       "      <td>...</td>\n",
       "      <td>0.018799</td>\n",
       "      <td>0.223051</td>\n",
       "      <td>0.379754</td>\n",
       "      <td>0.297757</td>\n",
       "      <td>0.067823</td>\n",
       "      <td>1.323856</td>\n",
       "      <td>0.044150</td>\n",
       "      <td>0.072173</td>\n",
       "      <td>0.039488</td>\n",
       "      <td>0.284785</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_2_S5</th>\n",
       "      <td>0.077746</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.048467</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.131533</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.053614</td>\n",
       "      <td>0.198005</td>\n",
       "      <td>0.021478</td>\n",
       "      <td>0.015269</td>\n",
       "      <td>...</td>\n",
       "      <td>0.040405</td>\n",
       "      <td>0.079570</td>\n",
       "      <td>0.793020</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.036401</td>\n",
       "      <td>3.994046</td>\n",
       "      <td>0.031239</td>\n",
       "      <td>0.105675</td>\n",
       "      <td>0.127109</td>\n",
       "      <td>0.502837</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_3_S6</th>\n",
       "      <td>0.020575</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.025652</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.179323</td>\n",
       "      <td>0.358341</td>\n",
       "      <td>0.056742</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.022736</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.021385</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.843168</td>\n",
       "      <td>0.134988</td>\n",
       "      <td>0.038523</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.012797</td>\n",
       "      <td>0.063389</td>\n",
       "      <td>0.089671</td>\n",
       "      <td>0.266756</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>6 rows × 198 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "Gene_name          Sema3f    Gm8225   Gm26608  A230072C01Rik    Gm2427  \\\n",
       "Cond_knock_1_S1  0.042506  0.061661  0.045534       0.103438  0.088369   \n",
       "Cond_knock_2_S2  0.000000  0.140195  0.025620       0.953007  0.246063   \n",
       "Cond_knock_3_S3  0.000000  0.130243  0.020485       0.636317  0.119801   \n",
       "Control_1_S4     0.018086  0.122847  0.000000       1.520317  0.000000   \n",
       "Control_2_S5     0.077746  0.000000  0.048467       0.000000  0.131533   \n",
       "Control_3_S6     0.020575  0.000000  0.025652       0.000000  0.179323   \n",
       "\n",
       "Gene_name         Gm34590   Gm12017   Gm45469   Gm56501       She  ...  \\\n",
       "Cond_knock_1_S1  0.318203  0.000000  0.124011  0.000000  0.014345  ...   \n",
       "Cond_knock_2_S2  0.178756  0.000000  0.069469  0.000000  0.008078  ...   \n",
       "Cond_knock_3_S3  0.047747  0.000000  0.055834  0.000000  0.025807  ...   \n",
       "Control_1_S4     0.105326  0.099985  0.000000  0.019989  0.028394  ...   \n",
       "Control_2_S5     0.000000  0.053614  0.198005  0.021478  0.015269  ...   \n",
       "Control_3_S6     0.358341  0.056742  0.000000  0.022736  0.000000  ...   \n",
       "\n",
       "Gene_name         Cks1brt   Gm16574   Gm29485   Gm57055   Gm20531   Gm20479  \\\n",
       "Cond_knock_1_S1  0.038128  0.074753  0.000000  0.179821  0.102594  0.547891   \n",
       "Cond_knock_2_S2  0.000000  0.167802  0.837306  0.269283  0.038460  2.727200   \n",
       "Cond_knock_3_S3  0.051224  0.067329  0.335589  0.053972  0.000000  3.547701   \n",
       "Control_1_S4     0.018799  0.223051  0.379754  0.297757  0.067823  1.323856   \n",
       "Control_2_S5     0.040405  0.079570  0.793020  0.000000  0.036401  3.994046   \n",
       "Control_3_S6     0.021385  0.000000  0.843168  0.134988  0.038523  0.000000   \n",
       "\n",
       "Gene_name          Efcab8   Gm26885   Gm15821  Igkv2-116  \n",
       "Cond_knock_1_S1  0.000000  0.128108  0.000000   0.000000  \n",
       "Cond_knock_2_S2  0.055080  0.041834  0.089505   0.000000  \n",
       "Cond_knock_3_S3  0.000000  0.000000  0.107482   0.000000  \n",
       "Control_1_S4     0.044150  0.072173  0.039488   0.284785  \n",
       "Control_2_S5     0.031239  0.105675  0.127109   0.502837  \n",
       "Control_3_S6     0.012797  0.063389  0.089671   0.266756  \n",
       "\n",
       "[6 rows x 198 columns]"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_tpm_not_corr = df_tpm[to_keep_corr]\n",
    "df_tpm_not_corr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "id": "c1902982-dc8b-455b-991c-1fd8a2264805",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_tpm = df_vsd.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "id": "12cad050-76a2-401b-a42c-db1e72f3655b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,\n",
       "        17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,\n",
       "        34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,\n",
       "        51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,\n",
       "        68, 69]),\n",
       " array([657, 579, 568, 565, 481, 447, 439, 437, 432, 428, 418, 410, 400,\n",
       "        394, 383, 358, 356, 354, 343, 342, 339, 330, 328, 325, 325, 321,\n",
       "        317, 305, 304, 302, 297, 292, 291, 282, 281, 280, 271, 271, 255,\n",
       "        252, 245, 242, 240, 230, 225, 224, 212, 210, 206, 202, 195, 181,\n",
       "        180, 180, 178, 173, 173, 171, 161, 159, 156, 154, 152, 144, 143,\n",
       "        126, 120,  87,  65,  56]))"
      ]
     },
     "execution_count": 112,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nearestNeighbors_object = NearestNeighbors(n_neighbors=5, metric='cosine')\n",
    "louvain_object = Louvain(random_state=42, resolution=2.)\n",
    "\n",
    "cl_X = df_tpm.T.values\n",
    "nearestNeighbors_object.fit(cl_X)\n",
    "labels = louvain_object.fit_predict(nearestNeighbors_object.kneighbors_graph())\n",
    "np.unique(labels, return_counts=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "dddfd134-9026-45cc-927b-f25983143085",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "id": "1b521beb-15a0-40e2-94d0-e6eda55ffe42",
   "metadata": {},
   "outputs": [],
   "source": [
    "G = nx.from_scipy_sparse_array(nearestNeighbors_object.kneighbors_graph())\n",
    "G = nx.relabel_nodes(G, dict(zip(range(len(df_tpm.columns)),df_tpm.columns)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "id": "7cbecb91-57b1-4fbc-8372-a209ed85a9ee",
   "metadata": {},
   "outputs": [],
   "source": [
    "cmap = plt.get_cmap('viridis')\n",
    "pathways_subcluster_colors = cmap(np.linspace(0, 1, len(np.unique(labels)))).tolist()\n",
    "# color_list = tuple([tuple(c[:-1]) for c in color_list])\n",
    "pathways_subcluster_colors = {i:c for i,c in enumerate(pathways_subcluster_colors)}\n",
    "# pathways_subcluster_colors"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "id": "88cd9ba5-b3aa-4e8e-9185-f31569af796f",
   "metadata": {},
   "outputs": [],
   "source": [
    "# "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "id": "ef8d8009-72e0-4d65-9e72-4fe23a151db5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Cond_knock_1_S1</th>\n",
       "      <th>Cond_knock_2_S2</th>\n",
       "      <th>Cond_knock_3_S3</th>\n",
       "      <th>Control_1_S4</th>\n",
       "      <th>Control_2_S5</th>\n",
       "      <th>Control_3_S6</th>\n",
       "      <th>node_to_community</th>\n",
       "      <th>node_color</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gene_name</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Igkv2-116</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.284785</td>\n",
       "      <td>0.502837</td>\n",
       "      <td>0.266756</td>\n",
       "      <td>69</td>\n",
       "      <td>[0.993248, 0.906157, 0.143936, 1.0]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm56501</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.019989</td>\n",
       "      <td>0.021478</td>\n",
       "      <td>0.022736</td>\n",
       "      <td>69</td>\n",
       "      <td>[0.993248, 0.906157, 0.143936, 1.0]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm5628</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.153100</td>\n",
       "      <td>0.158068</td>\n",
       "      <td>0.113947</td>\n",
       "      <td>69</td>\n",
       "      <td>[0.993248, 0.906157, 0.143936, 1.0]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm15544</th>\n",
       "      <td>0.060195</td>\n",
       "      <td>0.033847</td>\n",
       "      <td>0.027082</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>48</td>\n",
       "      <td>[0.259857, 0.745492, 0.444467, 1.0]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm15839</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.099216</td>\n",
       "      <td>0.112231</td>\n",
       "      <td>0.112071</td>\n",
       "      <td>69</td>\n",
       "      <td>[0.993248, 0.906157, 0.143936, 1.0]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ahrr</th>\n",
       "      <td>0.217211</td>\n",
       "      <td>0.245496</td>\n",
       "      <td>0.321595</td>\n",
       "      <td>0.356599</td>\n",
       "      <td>0.389833</td>\n",
       "      <td>0.255505</td>\n",
       "      <td>53</td>\n",
       "      <td>[0.404001, 0.800275, 0.362552, 1.0]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm43513</th>\n",
       "      <td>1.198966</td>\n",
       "      <td>1.189274</td>\n",
       "      <td>0.621206</td>\n",
       "      <td>1.095843</td>\n",
       "      <td>1.420132</td>\n",
       "      <td>1.347180</td>\n",
       "      <td>17</td>\n",
       "      <td>[0.231674, 0.318106, 0.544834, 1.0]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm43511</th>\n",
       "      <td>1.473935</td>\n",
       "      <td>1.363682</td>\n",
       "      <td>1.262349</td>\n",
       "      <td>1.696526</td>\n",
       "      <td>1.710662</td>\n",
       "      <td>1.614772</td>\n",
       "      <td>9</td>\n",
       "      <td>[0.278012, 0.180367, 0.486697, 1.0]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm43540</th>\n",
       "      <td>0.733735</td>\n",
       "      <td>0.342473</td>\n",
       "      <td>0.189345</td>\n",
       "      <td>0.404870</td>\n",
       "      <td>0.683678</td>\n",
       "      <td>0.582438</td>\n",
       "      <td>30</td>\n",
       "      <td>[0.150476, 0.504369, 0.55743, 1.0]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ighv5-2</th>\n",
       "      <td>1.730609</td>\n",
       "      <td>1.109382</td>\n",
       "      <td>0.667695</td>\n",
       "      <td>0.500077</td>\n",
       "      <td>3.154105</td>\n",
       "      <td>1.395102</td>\n",
       "      <td>30</td>\n",
       "      <td>[0.150476, 0.504369, 0.55743, 1.0]</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>19949 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           Cond_knock_1_S1  Cond_knock_2_S2  Cond_knock_3_S3  Control_1_S4  \\\n",
       "Gene_name                                                                    \n",
       "Igkv2-116         0.000000         0.000000         0.000000      0.284785   \n",
       "Gm56501           0.000000         0.000000         0.000000      0.019989   \n",
       "Gm5628            0.000000         0.000000         0.000000      0.153100   \n",
       "Gm15544           0.060195         0.033847         0.027082      0.000000   \n",
       "Gm15839           0.000000         0.000000         0.000000      0.099216   \n",
       "...                    ...              ...              ...           ...   \n",
       "Ahrr              0.217211         0.245496         0.321595      0.356599   \n",
       "Gm43513           1.198966         1.189274         0.621206      1.095843   \n",
       "Gm43511           1.473935         1.363682         1.262349      1.696526   \n",
       "Gm43540           0.733735         0.342473         0.189345      0.404870   \n",
       "Ighv5-2           1.730609         1.109382         0.667695      0.500077   \n",
       "\n",
       "           Control_2_S5  Control_3_S6  node_to_community  \\\n",
       "Gene_name                                                  \n",
       "Igkv2-116      0.502837      0.266756                 69   \n",
       "Gm56501        0.021478      0.022736                 69   \n",
       "Gm5628         0.158068      0.113947                 69   \n",
       "Gm15544        0.000000      0.000000                 48   \n",
       "Gm15839        0.112231      0.112071                 69   \n",
       "...                 ...           ...                ...   \n",
       "Ahrr           0.389833      0.255505                 53   \n",
       "Gm43513        1.420132      1.347180                 17   \n",
       "Gm43511        1.710662      1.614772                  9   \n",
       "Gm43540        0.683678      0.582438                 30   \n",
       "Ighv5-2        3.154105      1.395102                 30   \n",
       "\n",
       "                                    node_color  \n",
       "Gene_name                                       \n",
       "Igkv2-116  [0.993248, 0.906157, 0.143936, 1.0]  \n",
       "Gm56501    [0.993248, 0.906157, 0.143936, 1.0]  \n",
       "Gm5628     [0.993248, 0.906157, 0.143936, 1.0]  \n",
       "Gm15544    [0.259857, 0.745492, 0.444467, 1.0]  \n",
       "Gm15839    [0.993248, 0.906157, 0.143936, 1.0]  \n",
       "...                                        ...  \n",
       "Ahrr       [0.404001, 0.800275, 0.362552, 1.0]  \n",
       "Gm43513    [0.231674, 0.318106, 0.544834, 1.0]  \n",
       "Gm43511    [0.278012, 0.180367, 0.486697, 1.0]  \n",
       "Gm43540     [0.150476, 0.504369, 0.55743, 1.0]  \n",
       "Ighv5-2     [0.150476, 0.504369, 0.55743, 1.0]  \n",
       "\n",
       "[19949 rows x 8 columns]"
      ]
     },
     "execution_count": 129,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "aux = df_tpm.T\n",
    "aux['node_to_community'] = aux.index.map(dict(zip(aux.index,labels)))\n",
    "aux['node_color'] = aux['node_to_community'].map(pathways_subcluster_colors)\n",
    "aux.to_csv('/home/guilherme/Documents/science/karina_march1/vsd_communities.csv')\n",
    "aux"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "id": "ed00e999-d4aa-4429-9c51-0b5856f3fdd9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>condition</th>\n",
       "      <th>n_cond</th>\n",
       "      <th>sample</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Cond_knock_1_S1</th>\n",
       "      <td>Cond_knock</td>\n",
       "      <td>1</td>\n",
       "      <td>S1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cond_knock_2_S2</th>\n",
       "      <td>Cond_knock</td>\n",
       "      <td>2</td>\n",
       "      <td>S2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cond_knock_3_S3</th>\n",
       "      <td>Cond_knock</td>\n",
       "      <td>3</td>\n",
       "      <td>S3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_1_S4</th>\n",
       "      <td>Control</td>\n",
       "      <td>1</td>\n",
       "      <td>S4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_2_S5</th>\n",
       "      <td>Control</td>\n",
       "      <td>2</td>\n",
       "      <td>S5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_3_S6</th>\n",
       "      <td>Control</td>\n",
       "      <td>3</td>\n",
       "      <td>S6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  condition n_cond sample\n",
       "Cond_knock_1_S1  Cond_knock      1     S1\n",
       "Cond_knock_2_S2  Cond_knock      2     S2\n",
       "Cond_knock_3_S3  Cond_knock      3     S3\n",
       "Control_1_S4        Control      1     S4\n",
       "Control_2_S5        Control      2     S5\n",
       "Control_3_S6        Control      3     S6"
      ]
     },
     "execution_count": 126,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_meta = df_tpm.reset_index()['index'].str.rsplit('_',n=2, expand=True)\n",
    "df_meta.index = df_tpm.index\n",
    "df_meta.columns = ['condition', 'n_cond', 'sample']\n",
    "df_meta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2d32d1cf-e990-4bf3-a6d5-14ebc73b784d",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "id": "4845bf7c-6148-4cbc-b676-359756cbbe58",
   "metadata": {},
   "outputs": [],
   "source": [
    "pcas = []\n",
    "cols = []\n",
    "n_components = 1\n",
    "\n",
    "pcas_sig = []\n",
    "for clu in aux.node_to_community.unique():\n",
    "    pca = PCA(n_components=n_components, random_state=42)\n",
    "    # pcas.append(pd.DataFrame(pca.fit_transform(StandardScaler().fit_transform(adata_GSE120649[:,adata_GSE120649.var['Leiden_'+ptw]==lg].X))))\n",
    "    # pcas.append(pd.DataFrame(pca.fit_transform(StandardScaler().fit_transform(adata_GSE120649[:, adata_GSE120649.var['Leiden_'+ptw]==lg].layers['mrn']))))\n",
    "    pcas.append(pd.DataFrame(pca.fit_transform(StandardScaler().fit_transform(aux[(aux.node_to_community==clu)].loc[:,:'Control_3_S6'].T))))\n",
    "    pcas[-1].index = aux[(aux.node_to_community==clu)].loc[:,:'Control_3_S6'].T.index\n",
    "    pcas[-1].columns = ['PCA_1_'+str(int(clu))]\n",
    "    pcas[-1]['condition'] = pcas[-1].index.map(dict(df_meta.condition))\n",
    "    \n",
    "    cols.append('PCA_1_'+str(int(clu)))\n",
    "\n",
    "    pv = ttest_ind(pcas[-1][pcas[-1].condition=='Control']['PCA_1_'+str(int(clu))].values,\n",
    "                   pcas[-1][pcas[-1].condition=='Cond_knock']['PCA_1_'+str(int(clu))].values).pvalue\n",
    "\n",
    "    if pv <= 0.05:\n",
    "        pcas_sig.append(pcas[-1].drop('condition', axis=1))\n",
    "\n",
    "pcas_sig = pd.concat(pcas_sig, axis=1)\n",
    "pcas_sig['condition'] = pcas_sig.index.map(dict(df_meta.condition))\n",
    "# pcas = pd.concat(pcas, axis=1)\n",
    "# pcas.index = aux[(aux.node_to_community==clu)].loc[:,:'Control_3_S6'].T.index\n",
    "# pcas.columns = cols\n",
    "# pcas['condition'] = pcas.index.map(dict(df_meta.condition))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "id": "5041c9eb-8de2-4c01-95c5-bb039eb7f09d",
   "metadata": {},
   "outputs": [],
   "source": [
    "pcas_sig.to_csv('/home/guilherme/Documents/science/karina_march1/significant_pcas_network_communities.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 340,
   "id": "4591289e-dbf7-45ab-88a8-b82762913103",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PCA_1_31</th>\n",
       "      <th>PCA_1_18</th>\n",
       "      <th>PCA_1_14</th>\n",
       "      <th>PCA_1_44</th>\n",
       "      <th>PCA_1_42</th>\n",
       "      <th>PCA_1_26</th>\n",
       "      <th>PCA_1_25</th>\n",
       "      <th>PCA_1_43</th>\n",
       "      <th>PCA_1_48</th>\n",
       "      <th>PCA_1_21</th>\n",
       "      <th>...</th>\n",
       "      <th>PCA_1_20</th>\n",
       "      <th>PCA_1_37</th>\n",
       "      <th>PCA_1_30</th>\n",
       "      <th>PCA_1_46</th>\n",
       "      <th>PCA_1_32</th>\n",
       "      <th>PCA_1_40</th>\n",
       "      <th>PCA_1_33</th>\n",
       "      <th>PCA_1_19</th>\n",
       "      <th>PCA_1_41</th>\n",
       "      <th>PCA_1_15</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Cond_knock_1_S1</th>\n",
       "      <td>-15.430847</td>\n",
       "      <td>32.755022</td>\n",
       "      <td>-6.539761</td>\n",
       "      <td>-8.157903</td>\n",
       "      <td>3.360716</td>\n",
       "      <td>-7.478594</td>\n",
       "      <td>10.780672</td>\n",
       "      <td>2.349860</td>\n",
       "      <td>-7.737972</td>\n",
       "      <td>14.893190</td>\n",
       "      <td>...</td>\n",
       "      <td>-8.448128</td>\n",
       "      <td>-13.706676</td>\n",
       "      <td>3.018581</td>\n",
       "      <td>19.590459</td>\n",
       "      <td>-9.245235</td>\n",
       "      <td>13.872068</td>\n",
       "      <td>-17.334280</td>\n",
       "      <td>-1.916143</td>\n",
       "      <td>2.906022</td>\n",
       "      <td>8.406483</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cond_knock_2_S2</th>\n",
       "      <td>-3.013549</td>\n",
       "      <td>0.921218</td>\n",
       "      <td>-11.981574</td>\n",
       "      <td>-6.271929</td>\n",
       "      <td>21.726359</td>\n",
       "      <td>-15.458330</td>\n",
       "      <td>17.914024</td>\n",
       "      <td>-0.197251</td>\n",
       "      <td>-4.011815</td>\n",
       "      <td>-16.104204</td>\n",
       "      <td>...</td>\n",
       "      <td>-24.957211</td>\n",
       "      <td>15.073672</td>\n",
       "      <td>-0.953529</td>\n",
       "      <td>-6.207534</td>\n",
       "      <td>-7.275096</td>\n",
       "      <td>-8.524804</td>\n",
       "      <td>-13.304406</td>\n",
       "      <td>11.466215</td>\n",
       "      <td>23.446013</td>\n",
       "      <td>5.280956</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cond_knock_3_S3</th>\n",
       "      <td>-15.302855</td>\n",
       "      <td>-3.664727</td>\n",
       "      <td>32.312994</td>\n",
       "      <td>-9.114770</td>\n",
       "      <td>6.507045</td>\n",
       "      <td>-7.029754</td>\n",
       "      <td>21.828063</td>\n",
       "      <td>16.351960</td>\n",
       "      <td>-0.270598</td>\n",
       "      <td>-6.534123</td>\n",
       "      <td>...</td>\n",
       "      <td>31.215313</td>\n",
       "      <td>1.396450</td>\n",
       "      <td>3.981177</td>\n",
       "      <td>-16.733246</td>\n",
       "      <td>33.097490</td>\n",
       "      <td>19.689809</td>\n",
       "      <td>-8.780533</td>\n",
       "      <td>33.527557</td>\n",
       "      <td>7.232192</td>\n",
       "      <td>36.685781</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_1_S4</th>\n",
       "      <td>12.163090</td>\n",
       "      <td>-7.659344</td>\n",
       "      <td>-7.295908</td>\n",
       "      <td>-0.449253</td>\n",
       "      <td>-2.955943</td>\n",
       "      <td>33.571075</td>\n",
       "      <td>-11.577563</td>\n",
       "      <td>-12.667312</td>\n",
       "      <td>8.722645</td>\n",
       "      <td>-14.318892</td>\n",
       "      <td>...</td>\n",
       "      <td>-3.152279</td>\n",
       "      <td>-11.648212</td>\n",
       "      <td>-18.733911</td>\n",
       "      <td>-0.525876</td>\n",
       "      <td>-12.461845</td>\n",
       "      <td>-3.347969</td>\n",
       "      <td>17.095852</td>\n",
       "      <td>-24.085856</td>\n",
       "      <td>-11.447397</td>\n",
       "      <td>-21.759889</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_2_S5</th>\n",
       "      <td>-0.761829</td>\n",
       "      <td>-1.975660</td>\n",
       "      <td>1.077185</td>\n",
       "      <td>26.005044</td>\n",
       "      <td>-11.842792</td>\n",
       "      <td>-2.742209</td>\n",
       "      <td>-20.731316</td>\n",
       "      <td>-14.174605</td>\n",
       "      <td>8.562730</td>\n",
       "      <td>24.091572</td>\n",
       "      <td>...</td>\n",
       "      <td>-1.236228</td>\n",
       "      <td>10.863053</td>\n",
       "      <td>20.718911</td>\n",
       "      <td>3.450183</td>\n",
       "      <td>1.295781</td>\n",
       "      <td>-3.609037</td>\n",
       "      <td>-1.712646</td>\n",
       "      <td>-12.651020</td>\n",
       "      <td>-9.444690</td>\n",
       "      <td>-13.732527</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_3_S6</th>\n",
       "      <td>22.345989</td>\n",
       "      <td>-20.376511</td>\n",
       "      <td>-7.572936</td>\n",
       "      <td>-2.011189</td>\n",
       "      <td>-16.795385</td>\n",
       "      <td>-0.862189</td>\n",
       "      <td>-18.213879</td>\n",
       "      <td>8.337349</td>\n",
       "      <td>-5.264990</td>\n",
       "      <td>-2.027544</td>\n",
       "      <td>...</td>\n",
       "      <td>6.578533</td>\n",
       "      <td>-1.978287</td>\n",
       "      <td>-8.031230</td>\n",
       "      <td>0.426013</td>\n",
       "      <td>-5.411095</td>\n",
       "      <td>-18.080066</td>\n",
       "      <td>24.036013</td>\n",
       "      <td>-6.340752</td>\n",
       "      <td>-12.692141</td>\n",
       "      <td>-14.880804</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>6 rows × 49 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                  PCA_1_31   PCA_1_18   PCA_1_14   PCA_1_44   PCA_1_42  \\\n",
       "Cond_knock_1_S1 -15.430847  32.755022  -6.539761  -8.157903   3.360716   \n",
       "Cond_knock_2_S2  -3.013549   0.921218 -11.981574  -6.271929  21.726359   \n",
       "Cond_knock_3_S3 -15.302855  -3.664727  32.312994  -9.114770   6.507045   \n",
       "Control_1_S4     12.163090  -7.659344  -7.295908  -0.449253  -2.955943   \n",
       "Control_2_S5     -0.761829  -1.975660   1.077185  26.005044 -11.842792   \n",
       "Control_3_S6     22.345989 -20.376511  -7.572936  -2.011189 -16.795385   \n",
       "\n",
       "                  PCA_1_26   PCA_1_25   PCA_1_43  PCA_1_48   PCA_1_21  ...  \\\n",
       "Cond_knock_1_S1  -7.478594  10.780672   2.349860 -7.737972  14.893190  ...   \n",
       "Cond_knock_2_S2 -15.458330  17.914024  -0.197251 -4.011815 -16.104204  ...   \n",
       "Cond_knock_3_S3  -7.029754  21.828063  16.351960 -0.270598  -6.534123  ...   \n",
       "Control_1_S4     33.571075 -11.577563 -12.667312  8.722645 -14.318892  ...   \n",
       "Control_2_S5     -2.742209 -20.731316 -14.174605  8.562730  24.091572  ...   \n",
       "Control_3_S6     -0.862189 -18.213879   8.337349 -5.264990  -2.027544  ...   \n",
       "\n",
       "                  PCA_1_20   PCA_1_37   PCA_1_30   PCA_1_46   PCA_1_32  \\\n",
       "Cond_knock_1_S1  -8.448128 -13.706676   3.018581  19.590459  -9.245235   \n",
       "Cond_knock_2_S2 -24.957211  15.073672  -0.953529  -6.207534  -7.275096   \n",
       "Cond_knock_3_S3  31.215313   1.396450   3.981177 -16.733246  33.097490   \n",
       "Control_1_S4     -3.152279 -11.648212 -18.733911  -0.525876 -12.461845   \n",
       "Control_2_S5     -1.236228  10.863053  20.718911   3.450183   1.295781   \n",
       "Control_3_S6      6.578533  -1.978287  -8.031230   0.426013  -5.411095   \n",
       "\n",
       "                  PCA_1_40   PCA_1_33   PCA_1_19   PCA_1_41   PCA_1_15  \n",
       "Cond_knock_1_S1  13.872068 -17.334280  -1.916143   2.906022   8.406483  \n",
       "Cond_knock_2_S2  -8.524804 -13.304406  11.466215  23.446013   5.280956  \n",
       "Cond_knock_3_S3  19.689809  -8.780533  33.527557   7.232192  36.685781  \n",
       "Control_1_S4     -3.347969  17.095852 -24.085856 -11.447397 -21.759889  \n",
       "Control_2_S5     -3.609037  -1.712646 -12.651020  -9.444690 -13.732527  \n",
       "Control_3_S6    -18.080066  24.036013  -6.340752 -12.692141 -14.880804  \n",
       "\n",
       "[6 rows x 49 columns]"
      ]
     },
     "execution_count": 340,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.concat([p.drop('condition', axis=1) for p in pcas], axis=1)#.to_csv('/mnt/e/Karina_Borges_Project_004/all_pcas_network_communities.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "id": "c24291b3-48eb-4c65-90fe-d1c59e47ebfc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "p-value annotation legend:\n",
      "      ns: 5.00e-02 < p <= 1.00e+00\n",
      "       *: 1.00e-02 < p <= 5.00e-02\n",
      "      **: 1.00e-03 < p <= 1.00e-02\n",
      "     ***: 1.00e-04 < p <= 1.00e-03\n",
      "    ****: p <= 1.00e-04\n",
      "\n",
      "PCA_1_16_Control vs. PCA_1_16_Cond_knock: t-test independent samples, P_val:3.229e-02 t=3.220e+00\n",
      "PCA_1_9_Control vs. PCA_1_9_Cond_knock: t-test independent samples, P_val:2.904e-02 t=3.333e+00\n",
      "PCA_1_17_Control vs. PCA_1_17_Cond_knock: t-test independent samples, P_val:2.836e-02 t=3.358e+00\n",
      "PCA_1_22_Control vs. PCA_1_22_Cond_knock: t-test independent samples, P_val:3.394e-03 t=6.223e+00\n",
      "PCA_1_37_Control vs. PCA_1_37_Cond_knock: t-test independent samples, P_val:2.925e-02 t=3.325e+00\n",
      "PCA_1_13_Control vs. PCA_1_13_Cond_knock: t-test independent samples, P_val:2.853e-02 t=3.351e+00\n",
      "PCA_1_39_Control vs. PCA_1_39_Cond_knock: t-test independent samples, P_val:1.668e-02 t=3.960e+00\n",
      "PCA_1_60_Control vs. PCA_1_60_Cond_knock: t-test independent samples, P_val:2.334e-02 t=3.571e+00\n",
      "PCA_1_7_Control vs. PCA_1_7_Cond_knock: t-test independent samples, P_val:8.886e-04 t=8.880e+00\n",
      "PCA_1_48_Control vs. PCA_1_48_Cond_knock: t-test independent samples, P_val:5.104e-03 t=-5.566e+00\n",
      "PCA_1_69_Control vs. PCA_1_69_Cond_knock: t-test independent samples, P_val:7.490e-05 t=1.672e+01\n",
      "PCA_1_35_Control vs. PCA_1_35_Cond_knock: t-test independent samples, P_val:3.544e-02 t=-3.122e+00\n",
      "PCA_1_64_Control vs. PCA_1_64_Cond_knock: t-test independent samples, P_val:2.682e-03 t=6.632e+00\n",
      "PCA_1_0_Control vs. PCA_1_0_Cond_knock: t-test independent samples, P_val:9.414e-04 t=-8.747e+00\n",
      "PCA_1_14_Control vs. PCA_1_14_Cond_knock: t-test independent samples, P_val:1.051e-04 t=-1.535e+01\n",
      "PCA_1_62_Control vs. PCA_1_62_Cond_knock: t-test independent samples, P_val:1.191e-02 t=4.376e+00\n",
      "PCA_1_36_Control vs. PCA_1_36_Cond_knock: t-test independent samples, P_val:4.052e-02 t=2.985e+00\n"
     ]
    },
    {
     "data": {
      "image/png": "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+ox7W6kFnIrFYtGaNWtK/r225wEgcJncbrfb6CQCSXZ2tmJiYmSz2VS3bl2j0wEAAADgp4KCAl1++eWSpDVr1hiyh0sg5FCZ3G637Ha70WnIYrHIZDIZnQaA/7N3714NHTpUjRs31vfff68uXbooIyNDY8aM0eOPP+4RT05OZr8hAEBQKmvdIGhWuABAVeIhAgAAgHdut1v9+/fX5s2bjU5FHTt21IwZM7heAgJEy5YttXDhQo0YMUIbN25Ur169NGXKFEnyGQcAoCZjhcs/sMIFqH14iAAAQM3y94kURk1mCIQcKsvfV+sEgpqwYgioKfbv369hw4apfv36+uGHH3TxxRcrMzNTycnJPuOscAEABCNWuABAGdnt9oAotkjSpk2bZLfbeYgAAEAFmEwmw79LAyGHqrB06VLDWrT17Nmz2j+3qrC6GjXFnj17NGDAAPXo0UMJCQmaOnWqli9fftI4BRcAQE1GwQUA/oaHCAAAAL5ZrdYaWUiqTqyuDkwJCQlauXKl0WkEna5du3rEevTo4XWsrzgAADUJBReglvF1I8ENxnE8RAA8rVixQh9//LHCw8N15513qnPnzkanBABA0GJ1deBYu3atCgoKShUCli9fLqvV6rWQgJPzdT/JfWbFcb8OAMGDggtQC5zsRoIbDAAn88gjj5Ta4HTcuHFKTk7W0KFDDcyqepSnQM3NMADAH6yuNlZcXJyGDh2qxYsXKycnR4MGDVJGRoaSk5ONTg2gIAgAQYqCC1AL+LqRGDNmjB5//HFuMAB49f3335cqtpzw1FNP6a677lKTJk0MyKpqladALYmbYQBAubC62lgtW7bUwoULNWLECG3cuFG9evXyeu0DGIGCIAAEJ7PRCQCoeiduJGJiYrRx40bVq1dP7777ruLj473G2cQQqH3sdru2b99e6n9z5871OtbpdGrevHke47dv3x4QGwBXRFxcnN58800NGjSo5MZ2xowZatGihdd4q1atfL6nVatWRv9xAADASezfv199+vRRVlaWOnfurMzMTPXp00f79+83OjXA53089+sAENgouAC1wMluJLjBACBJaWlpSkxMLPW/r776yuf4uXPneoxPTExUWlpaNWZd+cpToOZmGACA4LRnzx4NGDBAU6dOVXR0tKZOnaoBAwZoz549RqcGcL8OAEGKlmJALXDiRqJHjx5KSEjQ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AADGW758uR588MGS10VFRVqwYIHCwsI0a9YsAzMDAACoPr4mGO7Zs8fne6ZMmeL1eokJhqhOmZmZmj17tjZv3qx27dqpf//+io2NNTqtgHayfY4SEhKUnp5eEuvQoYPGjRtHFwAD+F1wkaR69eopMTFRiYmJ2rdvn9555x3NmjVLzz33nIqKiio7RwCoEF9fSO3atVNYWJgmTZqkw4cPy2Qy6f/9v/+nF198UWFhYQZkCgD4J1+zNseOHet1/IIFC/TII48oOjra4xizNgEAQE3ja4Jhenq6brjhBtlstlLxG2+80ed1FBMMUV327t2ryy67rNR1/muvvaaVK1fqnHPOMTCz4NS+fXv98ccfSk5O1pw5c/Too4/qv//9r6xWq9Gp1UrlKric4HQ6tWHDBn3//ffas2cPVUgAQee2227TLbfcou+++04jR45UYmIixZYawOFw6JtvvlFRUZG6d++uyMhIo1MCUE6+Zm3+/PPPXsc7nU4NGjTI680FszYBAEBNc7IJhqtXr9bw4cO1bNkymc1m9evXT6+//roiIiIMyBT4y6hRozwmVR07dkzDhw/X559/blBWwa1+/fq699579e233+rWW2+l2GKgchVcvvnmG7399ttatGiRiouLdeutt+rTTz/VlVdeWdn5AUCVCw0NVWxsrMxms9GpoBKsXr1ad9xxhw4dOiTp+KrMmTNn6tZbbzU4MwDl4WvW5rhx4zR9+nSPePPmzTV37lyvf6czaxMAANQm5513nr788ktt375diYmJevzxxym2oFr5Wq3+2WefeR2/ZMkSbdu2zeueuqxWR7Dwu+DSokULHTt2TL169dKbb76pG264gR92AEBAyM/P1y233KKMjIySWFZWlu68807t3r1bzZo1MzA7AOXha9bmCy+8oGXLlpXqTx4SEqLx48erffv21ZghAAAAAG98rVbPzc31Ot5kMumhhx7yeozV6ggWfhdcnnvuOd12222qX79+VeQDAECZeJsp88UXX5QqtpzgcDj0+uuv6/777/c4xiwZIDjFxsbqhx9+0BtvvKFly5Zp165dev3113XbbbcZnRoAoBay2WxyuVw8KwGAv/G1Wn3GjBle9xLq27evnnrqKZ/nAoKB3wUXb1VJAACqm7eZMgcPHvQ5/p133tF3333nEWeWDBC8GjdurNGjR+vuu+9WYmKiOnbsaHRKAIBaZt++fXr44Yf1xRdfyOVyqXv37po8ebLOOusso1MDAMP5Wq3+8ssvy2azaebMmSouLpYkXXPNNZo8eTJ7jyDolWsPFwAAjOZtpkx6erquvPJKFRUVeYwfP368zj77bK/nAQAAAPzlcrnUq1cvbdmypST2zTff6KqrrtKff/6pqKgoA7MDgMAVEhKiN998U88++6y++uorTZ8+XRMnTqTYghqBggsAICh5mynTrl07vfzyy3riiSdKxf/73//qlltuqc70AAAAUIN4a2e7evXqUsWWEw4ePKhJkyapd+/eHsdoZwsAf2nRooWuuOIKLViwwOhUgEpDwQUAUKM8/vjj6t69u6ZMmaIlS5bolVde0T333GN0WgAAAAhi3trZHjhwwOf4N998U0uWLPGI084WAICajYILAKDGueCCCzR8+HDt3LlTF198sdHpAAAAIMh5a2f7xx9/6Oabb/Y6fuTIkerWrZvX8wAAgJqLggsAAAAAAMBJ+Gpne8cdd+i9994rFe/WrZv69+8vs9lcnSkCAIAAwLc/AAAAAABAOSxYsECTJk1Sp06dFB0draFDh+qLL76g2AIAQC3FFQAAAAAAAEA5hIaGavDgwXr33XfVuXNnPfTQQ4qMjDQ6LQAAYBAKLgAAAAAAAAAAABVEwQUAAAAAAAAAAKCCQo1OAAAAAEDlSU9Pl81mK/f7U1NTS/2zPGJiYhQbG1vu9wMAgL8Ewne7xPc7vAuEn09+NhFIKLgAAAAANUR6erru7XuPCh3OCp8rKSmp3O+NCA/TvPkLuPEFgtT+/fuVmpqqs846S/Xr1zc6HaBWC5Tvdonvd3gKlJ9PfjYRSCi4oEZxuVxat26dcnJydPnll6tOnTqljmdkZGjv3r1q06ZNqWOHDh3S+PHj9e2336pp06YaNGiQrrzyyupOHwAAoEJsNpsKHU4N7JCjZlHFhuRwIC9E07ZEy2azcdMLBKiioiJ9/fXXysrK0pVXXqnGjRtLkux2uwYMGKB3331XxcXFslqtGjZsmF544QWDM656gTBDW2KWNjwFwne7xPc7vAuEn09+NhFoKLigxvj111916623aseOHZKkunXratKkSbrvvvvkdDo1ZMgQzZw5U4WFhYqOjtYTTzyhZ599VocOHdLFF1+svXv3lpxr8eLFmjVrlvr162fQnwYAAKD8mkUVq1W0cQ9lAASuTZs26cYbb1RaWpokKTw8XK+88ooee+wxDR8+XG+99VbJ2IKCAr344otq3bq1HnjgAaNSrnKBMkNbYpY2fOO7HYGMn8/KU5EJABT/AwMFF9QILpdLt9xyi3bu3FkSy87O1gMPPKCLLrpIb731lqZMmVJyLCcnR88995xatGihP//8s1SxRZLcbreefvpp3XPPPQoN5dcEAAAAQHCx2+0lRZUT3G63brrpplJxh8OhoUOHqmnTppo5c6bXc02bNq1GF1wCYYa2xCxtAKjtKmsCAMV/Y/EkGUFnx44d2r17d6nYpk2bShVbTnC5XHr00Uf1/fffez3X//73P4WFhXk9dvDgQc2fP18tWrTwONa6dWudccYZ5cgeAAAAACpu69atHhPH/u7gwYOaNWtWqZjNZvM563Xo0KHKy8vzeiwtLU3Lli3zeqxly5Zq3759GbMObMzQBgAYKRAmAFD8rzgKLgg6r7/+ujZt2lQqdvToUZ/jt27dqvz8fK/HDh8+rJiYGK/HTCaTZsyY4bUg07FjR02cONGPrAEAAACgcqSnp+uRQYNU7HL59T7XSca73W7VrVtX2dnZHsfMZrPP2bIhZrPefucdHsoAAFBJmAAQ3Ci4IOgMHjzYY4VLXl6e7rzzTtntdo/x1113nZYvX+51Jtc555yjSy65RFOmTJHb7S517Morr9Tw4cO95tC6desK/AkAAAAAoPxsNpuKXS71bp2nxtayF10cRWY9sj1EuXbPhzh3nx+paEtdvfxZrgqL/jpng6gwjezRUA3r5Hi850iBWYt2RzELFgAA4P9QcEHQOeOMM7y283r99deVmJhYqnBy++23a/r06Vq7dq169uypgoKCkmONGjXSO++8o7Zt26pr164aPny49u7dq/DwcN1zzz164403ZLVaq+XPBAAAAAD+6tjI6fcM2LE3NdN/PtgnZ/Ff9003nhujR7tYZTabdGV8Gy34MVOpmQ6d29Siuy5soIZRkuTwONeenBAt2u0RrpUKi1xyuyVLmNnoVAAAgIEouKDGGDBggC6++GLNmzdPubm5uv7663X99dfLZDLpsssu008//aQ33nhDO3bs0Pnnn6/BgweX7M9y55136vbbb1dqaqoaNmzos80YAACofOnp6bLZbOV+/4lVrL72JSiLmJgYZmcDqBWu6xCjcwZb9eGmLOUUFivh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7rpLs2bNcniM8rhLPu25F0nSkiVLFBUVJR8fHzVs2FCjRo1yaBxHuUN+t2zZUup93GKxaM+ePQ7F4Sh3yJ9k//sn12fF8rtv3z716NFDgYGBuv322/X444/r0qVLDh3DUe6Su/KuzSVLlpT5+j9z5oxDY92IO+QzPT1dw4cPV/PmzeXr66tf/OIXmjRpkvLy8mx9uLefd2j/8u7tXJ/nHdq/vNf72bNnFRsbq8aNG8vb21shISEaNWqULly44NA45XGXfNrzb0++p3NMed+FZGRkqFevXvLz81O9evU0evToYu+xqDgKLnBYbGysMjMz9f333+u1117T3LlzNW7cOEnSiy++qAEDBujee+/V+vXrdejQIc2YMUNff/21li1bVuw4K1euVOvWrRUZGalPP/3UoRguX76s2NhYvfDCCxU6h5UrVyouLk7/9V//pa+//lr/+te/NGjQINv2gwcP6sEHH1RsbKz279+vjz76SJ999pn+8pe/VGi8G3GHfF4zYcIENW7cuET7xYsXFRMTo9DQUO3atUvbt29XQECAYmJilJ+fX6kxf84d8tm1a1etWLFCR44c0cqVK5Wamqp+/fqV6Ld48WJlZmbafoYOHVqh8criDrks77V+veHDhysqKqpC41SUO+R40KBBOnDggDZs2KANGzbowIEDiouLq9CxHOEOucvLy9Pvf/97PfXUU+X2rerr0x3yWd7rfe/evapfv74++OADHT58WC+++KKef/55zZkzp0Lj3Yg75NOee9Hf/vY3vfjii/rLX/6iw4cPKykpSTExMRUazxE1Pb8dOnQodv/OzMzUn/70J4WFhSk6Otrh4zmqpudPsu/9k+uzYvk9efKkunfvrvDwcO3atUsbNmzQ4cOHNWzYMIeP5aianjup/GtzwIABJV7/MTEx6ty5sxo0aFChMctS0/P57bffqqioSAsWLNDhw4f15ptvav78+cWOxb3dMeXd27k+HVPe693Dw0O9e/fWZ599pqNHj2rJkiXavHmznnzyyQqNdyPukM/yrk++p3NMeZ+NCgsL9dBDDyknJ0fbt2/XRx99pJUrV2rs2LEVGg8/YwAHDB061PTu3btY25/+9CfTsGFDs2vXLiPJzJw5s9R9z507V+z3Ll26mPnz55t58+aZrl27ViieL774wkgqcewbyc/PN02aNDHvvvtumX2ef/55Ex0dXaxt1apVxsfHx1y4cKFCsZbGHfJ5zbp168ydd95pDh8+bCSZ/fv327bt2bPHSDIZGRm2toMHDxpJ5tixYxWKtTTulM/r/fOf/zQWi8Xk5eXZ2iSZVatWVeq4N+IOubTntX7N3LlzTefOnU1SUpJT/p/Zwx1ynJycbCSZL7/80ta2c+dOI8l8++23FYrDHu6Qu+stXrzYWK3WMrdX9fXpDvl05PV+vZEjR1Y4zrK4Qz5L8/N7UVZWlvH19TWbN2+u1HEd5Y75zcvLMw0aNDDx8fEVPoa93C1/Zb1/cn3+pCL5XbBggWnQoIEpLCy0te3fv99IMt99912F4rCHO+TueuXd2685c+aM8fT0NO+//36FximLu+XzmqlTp5rmzZvfsA/3dvuV9jnzelyf9rH39W6MMbNmzTJNmzat0Dhlcbd8XvPz65Pv6c6V2/caez4brVu3znh4eJgTJ07Y2pYvX268vb1NdnZ2hWLF/+EJF1Sar6+v8vPz9eGHH8rf318jR44std/1j1impqZq586d6t+/v/r3768dO3bo+++/r5Z49+3bpxMnTsjDw0O//OUv1ahRI/Xs2VOHDx+29cnNzZWPj0+x/Xx9fXX16lXt3bu3SuOrafmUpNOnT2vEiBFatmyZateuXWL7HXfcoXr16mnRokXKy8vTlStXtGjRIrVq1UrNmjWr0thqYj6vl5WVpQ8//FAdOnSQp6dnsW2jRo1SvXr1dO+992r+/PkqKiqq0lhqWi7tea1LUnJysuLj4/X+++/Lw8O1t8WaluOdO3fKarXqvvvus7Xdf//9slqt2rFjR7XEcE1Ny529XHV91rR82vt6/7ns7GwFBQVVeXw1LZ8/V9q9aNOmTSoqKtKJEyd01113qWnTpurfv7+OHz9e7fHV9Px+9tln+s9//lMtTxCUpqbnrzRcnxWXm5srLy+vYvccX19fSdL27durJYbrx61JuauI999/X7Vr1y71aXZnc4d82nPf5t5unxt9zryG69O5Tp48qU8//VSdO3eu8rFqej5Luz75ns5+9nw22rlzp1q3bl1slpqYmBjl5uZWeT5vBRRcUCm7d+/W3//+d3Xr1k3fffedWrRoUebN+nrvvfeeevbsaZvLMDY2Vu+99141RCzbG9zkyZP13//931qzZo3q1q2rzp072+ZbjImJ0Y4dO7R8+XIVFhbqxIkTeu211yRJmZmZVRZbTcynMUbDhg3Tk08+WeY0GHXq1NGWLVv0wQcfyNfXV/7+/kpMTNS6det02223VVlsNTGf10ycOFF+fn66/fbblZGRoX/+85/Ftr/66qv65JNPtHnzZg0cOFBjx47VlClTqiyemphLe17rubm5euyxxzRt2jSFhoZWS1xlqYk5PnXqVKnTCzRo0ECnTp2qlhikmpk7e7jq+qyJ+bTn9f5zO3fu1IoVK/TEE09UaWw1MZ/X3Ohe9P3336uoqEhTpkzRzJkz9Y9//ENZWVnq0aNHtc79XJPze82iRYsUExOjkJCQah/bHfJXGq7PinvggQd06tQpTZs2TXl5eTp37pxtOpOq/Bz0czUxdxXx3nvvadCgQbaiVlVxh3ympqZq9uzZN5yOiXt7+cr7nHk9rk/neOyxx1S7dm01adJEAQEBevfdd6t0vJqczxtdn3xPZz97PhudOnVKwcHBxfarW7euvLy8qvWzvNty9SM2qFmGDh1qatWqZfz8/Iy3t7fx8PAwjz76qDl9+rSJjY0199xzT7nHKCgoME2aNDH/+Mc/bG2ffPKJadq0qSkoKHAonoo8Wvfhhx8aSWbBggW2tqtXr5p69eqZ+fPn29pmzJhhAgICTK1atUzt2rXN66+/biSZjz/+2KEYb8Qd8jlr1izToUMH21hpaWklphS7fPmyadeunRkyZIjZvXu32blzp/nd735nWrVqZS5fvuxQjDfiDvm85t///rc5cuSI2bhxo+nYsaN58MEHTVFRUZn9p0+fbgICAhwepyzukEt7XuvPPvusGTBgQKXGqSh3yHFCQoKJiIgo0R4eHm5ef/11h8Z3hDvk7nplTUNQXdenO+TT3nv7NYcOHTL169c3r776qkOx2cMd8nnNje5FCQkJRpJJTEy09T9z5ozx8PAwGzZscHgse7lTfo0x5vjx48bDw6NYLFXJ3fJX1vsn1+dPKprfDz/80AQHB5tatWoZLy8vM27cOBMcHGz++te/OnQcR7hL7q6xZ4qhHTt2GEnmq6++qtAYN+Ju+Txx4oQJDw83w4cPL7MP93b72Ps5k+vTfuW93jMzM01KSopZvXq1iYyMNE899VSFximLO+WzvOuT7+nsY89noxEjRpjf/va3Jfb19PQ0y5cvdyhGlETBBQ4ZOnSo6d69u/nuu+9Menp6sbk+R48ebfz9/cuc//OatWvXGkmmVq1axX4kmXXr1jkUT0XeeD7//HMjyWzbtq1Ye7t27cwLL7xQrK2oqMicOHHCXL582bZWwe7dux2K8UbcIZ+9e/c2Hh4eJcauVauWGTJkiDHGmHfffbfEXNC5ubmmdu3aTn0jd4d8lub48eNGktmxY0eZfbZv324kmVOnTlVqrGvcIZf2vNbvueeeYtevh4eHLeaXX37ZoRgd5Q45XrRoUakfLqxWq3nvvfccGt8R7pC765X1Ia26rk93yKcj9/bDhw+bBg0alGh3FnfIZ2l+fi967733jCRz/PjxYv0aNGhgFi5cWKmxbsTd8hsfH2/q169fbszO4m75K+v9k+vzJ5XN76lTp8zFixfNpUuXjIeHh1mxYkWFjmMPd8udPQWXP/7xj6ZNmzYVOn553CmfJ06cMBERESYuLq7Y58nrcW+vmBt9zuT6tJ8ja7hs27bNSDInT56s0Filcbd8XlPW9cn3dOWz57PRSy+9ZKKiooptz8rKMpLM559/7lCMKIkpxeAwPz8/hYeHq1mzZsUeoxs0aJAuXbqkuXPnlrrf+fPnJf00bcLAgQN14MCBYj+DBw/WokWLqjz+tm3bytvbW0eOHLG15efnKz09vcR6IhaLRY0bN5avr6+WL1+ukJAQ/epXv3JqPDU9n2+99Za+/vpr27jr1q2TJH388cdKSEiQJF2+fFkeHh6yWCy2/a797ux1R2p6PktjjJH00/RCZdm/f798fHyKzRlaWTU9l/a81leuXFns+r32ePe2bdv09NNPV3mMNT3H7du3V3Z2tnbv3m1r27Vrl7Kzs9WhQ4cqHbum584e1Xl91vR82ntvP3z4sLp27aqhQ4fa7lFVoabnszQ/vxd17NhRkorlPCsrS//5z3+qfH02d8mvMUaLFy/WkCFD7JqawlncJX83wvXpHMHBwfL399fHH38sHx8f9ejRo0rHc6fclefSpUtasWKFhg8fXmVjuEM+T5w4oS5duuhXv/qVFi9eXOp6dtzbK66sz5lcn1XHns/2FeGO+SwrV3xPVz57Phu1b99ehw4dKjYd28aNG+Xt7a22bdtWeYxuz5XVHtQ8Q4cONb179y5z+4QJE0ytWrXM+PHjzY4dO0x6errZvHmz6devn5k5c6Y5c+aM8fT0NOvXry+x78aNG42np6c5c+ZMuXFkZmaa/fv3m3feecdIMv/7v/9r9u/fb86ePWvXefz5z382TZo0MYmJiebbb781w4cPNw0aNDBZWVm2PlOnTjUHDx40hw4dMvHx8cbT09OsWrXKruPby13yeb3SphRLSUkx3t7e5qmnnjLJycnm0KFD5g9/+IOxWq1O/8uOmp7PXbt2mdmzZ5v9+/eb9PR08/nnn5tf//rX5he/+IW5evWqMcaYzz77zCxcuNB888035tixY+add94xAQEBZvTo0eUe317ukEtj7HutX6+6pxRzhxzHxsaaqKgos3PnTrNz505z9913m4cfftiufSvKXXL3ww8/mP3795tXXnnF+Pv7m/3795v9+/ebixcvltq/KqcUc4d8lvd6vzbVyODBg01mZqbtx57YHOEO+bTnXmTMT0+5tmrVyvzrX/8y33zzjXn44YdNZGRklT6t4Q75vWbz5s1GkklOTrZ7n8pyl/zZ8/7J9Vnx/M6ePdvs3bvXHDlyxMyZM8f4+vqaWbNm2bVvRblL7uy9t7/77rvGx8enzH+TVpY75PPaNGIPPPCA+fHHH4vdu6/h3u78e7sxXJ/Oer2vXbvWvPfee+abb74xaWlpZu3ataZVq1amY8eOdh3fXu6QT3uvT76nc95no4KCAtO6dWvTrVs3s2/fPrN582bTtGlTM2rUKLuOjxuj4AKHlPfGY4wxH3/8senUqZOpU6eO8fPzM1FRUSY+Pt6cO3fOTJ8+3QQGBpb6QSc/P98EBQWZGTNmlBvHpEmTjKQSP4sXL7brPPLy8szYsWNNgwYNTJ06dUz37t3NoUOHivXp2rWrsVqtxsfHx9x3330OP/ZnD3fJ5/VKK7gYY2xzcFqtVlO3bl3zwAMPmJ07dzp8/Btxh3wePHjQdO3a1QQFBRlvb28TFhZmnnzySfPjjz/a+qxfv960adPG+Pv7m9q1a5vWrVubmTNnmvz8/HKPby93yKUx9r3Wr3czFVyMqRk5Pnv2rBk8eLCpU6eOqVOnjhk8eHCV589dcjd06NBS9//iiy9K7e+qgosxNSOf5b3eyzp+s2bN7Dq+vdwhn/bci4wxJjs72/zxj380gYGBJigoyDz66KMmIyOj3ONXhjvk95rHHnvMdOjQwe7+zuAu+bPn/ZPrs+L5jYuLM0FBQcbLy8tERUWZ999/3679KsNdcmfvvb19+/Zm0KBBdh2zItwhn4sXLy513+v/bph7u/Pv7cZwfTrr9f7555+b9u3b275XatmypZk4cSL/li+Fvdcn39M597uQH374wTz00EPG19fXBAUFmVGjRpUowKJiLMb8/2e0AAAAAAAAAAAAUCGs4QIAAAAAAAAAAFBJFFxw0/nwww/l7+9f6k+rVq3K3X/KlCll7t+zZ89qOIObC/l0LvLpPOSy6pHjiiN3zkU+nYt8Vi3yWznkr2qR34ojd85FPp2LfDoX+XQu8ulc5NP9MaUYbjoXL17U6dOnS93m6empZs2a3XD/rKwsZWVllbrN19dXTZo0qXSMNQn5dC7y6TzksuqR44ojd85FPp2LfFYt8ls55K9qkd+KI3fORT6di3w6F/l0LvLpXOTT/VFwAQAAAAAAAAAAqCSmFAMAAAAAAAAAAKgkCi4AAAAAAAAAAACVRMEFAAAAAAAAAACgkii4AAAAALjlpaeny2Kx6MCBA3bvM2zYMPXp0+eGfbp06aIxY8ZUKjYAAAAANcNtrg4AAAAAAFwtJCREmZmZqlevnqtDAQAAAFBDUXABAAAAcEvLy8uTl5eXGjZs6OpQAAAAANRgTCkGAAAAoMZYsGCBmjRpoqKiomLtjzzyiIYOHarU1FT17t1bwcHB8vf317333qvNmzcX6xsWFqbXXntNw4YNk9Vq1YgRI0pMKVZYWKjhw4erefPm8vX11R133KFZs2aVGtMrr7yiBg0aKCAgQE888YTy8vLKjD8vL08TJkxQkyZN5Ofnp/vuu09btmypVE4AAAAA3BwouAAAAACoMX7/+9/rP//5j7744gtb27lz55SYmKjBgwfr0qVLevDBB7V582bt379fMTEx6tWrlzIyMoodZ9q0aWrdurX27t2rl156qcQ4RUVFatq0qVasWKHk5GS9/PLLeuGFF7RixYpi/ZKSkpSSkqIvvvhCy5cv16pVq/TKK6+UGf9//dd/6V//+pc++ugjHTx4UL///e8VGxur7777rpKZAQAAAOBqFmOMcXUQAAAAAGCv3r17q169elq0aJEkaeHChZo0aZJ+/PFH1apVq0T/Vq1a6amnntKoUaMk/fSEyy9/+UutWrXK1ic9PV3NmzfX/v371aZNm1LHffrpp3X69Gn94x//kCQNGzZM//M//6Pjx4+rdu3akqT58+dr/Pjxys7OloeHh7p06aI2bdpo5syZSk1NVcuWLfXjjz+qcePGtuN2795d7dq105QpU5ySHwAAAACuwRMuAAAAAGqUwYMHa+XKlcrNzZUkffjhhxo4cKBq1aqlnJwcTZgwQZGRkQoMDJS/v7++/fbbEk+4REdHlzvO/PnzFR0drfr168vf31/vvPNOiePcc889tmKLJLVv316XLl3S8ePHSxxv3759MsYoIiJC/v7+tp+tW7cqNTW1IqkAAAAAcBO5zdUBAAAAAIAjevXqpaKiIq1du1b33nuvtm3bpr/97W+SpPHjxysxMVHTp09XeHi4fH191a9fvxLrqvj5+d1wjBUrVujZZ5/VjBkz1L59e9WpU0fTpk3Trl277IrRYrGUaCsqKlKtWrW0d+/eEk/i+Pv723VcAAAAADcvCi4AAAAAahRfX1/17dtXH374oY4dO6aIiAi1bdtWkrRt2zYNGzZMjz76qCTp0qVLSk9Pd3iMbdu2qUOHDho5cqStrbSnUL7++mtduXJFvr6+kqQvv/xS/v7+atq0aYm+v/zlL1VYWKgzZ87oN7/5jcMxAQAAALi5MaUYAAAAgBpn8ODBWrt2rd577z394Q9/sLWHh4fr008/1YEDB/T1119r0KBBKioqcvj44eHh+uqrr5SYmKijR4/qpZde0p49e0r0y8vL0/Dhw5WcnKz169dr0qRJGjVqlDw8Sn7UioiI0ODBgzVkyBB9+umnSktL0549e/TXv/5V69atczhGAAAAADcXCi4AAAAAapwHHnhAQUFBOnLkiAYNGmRrf/PNN1W3bl116NBBvXr1UkxMjH71q185fPwnn3xSffv21YABA3Tffffp7NmzxZ52uaZbt25q2bKlOnXqpP79+6tXr16aPHlymcddvHixhgwZorFjx+qOO+7QI488ol27dikkJMThGAEAAADcXCzGGOPqIAAAAAAAAAAAAGoynnABAAAAAAAAAACoJAouAAAAAAAAAAAAlUTBBQAAAAAAAAAAoJIouAAAAAAAAAAAAFQSBRcAAAAAAAAAAIBKouACAAAAAAAAAABQSRRcAAAAAAAAAAAAKomCCwAAAAAAAAAAQCVRcAEAAAAAAAAAAKgkCi4AAAAAAAAAAACVRMEFAAAAAAAAAACgkii4AAAAAAAAAAAAVNL/A07aAOwBM8CWAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 2000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(20,5))\n",
    "ax = fig.add_subplot(111)\n",
    "\n",
    "data = pcas_sig.melt(id_vars='condition')\n",
    "order = pcas_sig.columns[:-1]\n",
    "hue_order = ['Control', 'Cond_knock']\n",
    "x='variable'\n",
    "y='value'\n",
    "hue='condition'\n",
    "\n",
    "sns.boxplot(x=x, y=y, hue=hue, order=order, hue_order=hue_order,  data=data, ax=ax)\n",
    "sns.swarmplot(x=x, y=y, hue=hue, order=order, hue_order=hue_order, dodge=True, palette='dark:black', data=data, ax=ax)\n",
    "\n",
    "# ax.legend().remove()\n",
    "\n",
    "pairs = []\n",
    "for o in order:\n",
    "    pairs.append(tuple([(o, h) for h in hue_order]))\n",
    "# pairs = [(('PCA_1_0', 'Control'), ('PCA_1_1', 'Cond_knock'))]\n",
    "    \n",
    "annotator = Annotator(ax, pairs, data=data, x=x, y=y, hue=hue, order=order, hue_order=hue_order)\n",
    "annotator.configure(test='t-test_ind', text_format='star', loc='inside', )\n",
    "annotator.apply_and_annotate()\n",
    "# t-test_ind, t-test_welch, t-test_paired, Mann-Whitney, Mann-Whitney-gt, Mann-Whitney-ls, Levene, Wilcoxon, Kruskal, Brunner-Munzel.\n",
    "\n",
    "fig.savefig('/home/guilherme/Documents/science/karina_march1/network_communities_pca_per_condition.pdf')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "id": "ebbfa3dc-2488-4202-98c3-0802f3e8e419",
   "metadata": {},
   "outputs": [],
   "source": [
    "aux['eg'] = aux.index.map(nx.eigenvector_centrality(G, max_iter=200))\n",
    "aux['dg'] = aux.index.map(nx.degree_centrality(G))\n",
    "aux.to_csv('/home/guilherme/Documents/science/karina_march1/vsd_communities_eg.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7dc71796-e596-4617-83b2-dc046cabc1fa",
   "metadata": {},
   "source": [
    "# Enrichment from network"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "4dfceaee-888e-4a6c-82a5-74e463c8822c",
   "metadata": {},
   "outputs": [],
   "source": [
    "import gseapy as gp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "979f8098-304f-45dd-9c73-9d8c625b90e4",
   "metadata": {},
   "outputs": [],
   "source": [
    "pcas_sig = pd.read_csv('/home/guilherme/Documents/science/karina_march1/significant_pcas_network_communities.csv',index_col=0)\n",
    "aux = pd.read_csv('/home/guilherme/Documents/science/karina_march1/vsd_communities_eg.csv',index_col=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "195cf742-86dd-4141-87e5-a65fdbe75d14",
   "metadata": {},
   "outputs": [],
   "source": [
    "david_enrich_sets = pd.DataFrame([aux[aux['node_to_community']==c].index.tolist() for c in [int(c.split('_')[-1]) for c in pcas_sig.columns[:-1]]]).T\n",
    "david_enrich_sets.columns = [c for c in pcas_sig.columns[:-1]]\n",
    "david_enrich_sets.to_csv('/home/guilherme/Documents/science/karina_march1/david_enrich_sets.tsv', sep='\\t',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "f4bf182c-cee2-442a-8a8a-4a59f0554858",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PCA_1_69</th>\n",
       "      <th>PCA_1_48</th>\n",
       "      <th>PCA_1_35</th>\n",
       "      <th>PCA_1_64</th>\n",
       "      <th>PCA_1_0</th>\n",
       "      <th>PCA_1_14</th>\n",
       "      <th>PCA_1_62</th>\n",
       "      <th>PCA_1_36</th>\n",
       "      <th>PCA_1_7</th>\n",
       "      <th>PCA_1_16</th>\n",
       "      <th>PCA_1_9</th>\n",
       "      <th>PCA_1_17</th>\n",
       "      <th>PCA_1_22</th>\n",
       "      <th>PCA_1_37</th>\n",
       "      <th>PCA_1_13</th>\n",
       "      <th>PCA_1_39</th>\n",
       "      <th>PCA_1_60</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Igkv2-116</td>\n",
       "      <td>Gm15544</td>\n",
       "      <td>Gm17812</td>\n",
       "      <td>Gm45555</td>\n",
       "      <td>Pbx1</td>\n",
       "      <td>Rasl11b</td>\n",
       "      <td>Pbk</td>\n",
       "      <td>Paxx</td>\n",
       "      <td>Pbx3</td>\n",
       "      <td>Pcbp2</td>\n",
       "      <td>Pax5</td>\n",
       "      <td>Parp3</td>\n",
       "      <td>Patj</td>\n",
       "      <td>Patl1</td>\n",
       "      <td>Pdcd10</td>\n",
       "      <td>Pdcd2l</td>\n",
       "      <td>Pcgf2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Gm56501</td>\n",
       "      <td>Gm15979</td>\n",
       "      <td>Gm49476</td>\n",
       "      <td>Gm42941</td>\n",
       "      <td>Pcbd2</td>\n",
       "      <td>Pcx</td>\n",
       "      <td>Rbm7</td>\n",
       "      <td>Pdcd7</td>\n",
       "      <td>Pcca</td>\n",
       "      <td>Rcan1</td>\n",
       "      <td>Parpbp</td>\n",
       "      <td>Pced1a</td>\n",
       "      <td>4930513N10Rik</td>\n",
       "      <td>Rc3h1</td>\n",
       "      <td>Rbx1</td>\n",
       "      <td>Otulinl</td>\n",
       "      <td>P2ry1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Gm5628</td>\n",
       "      <td>Gm16213</td>\n",
       "      <td>Gm48261</td>\n",
       "      <td>Gm44745</td>\n",
       "      <td>Pcyt1b</td>\n",
       "      <td>P2ry13</td>\n",
       "      <td>Pias4</td>\n",
       "      <td>Phf8</td>\n",
       "      <td>Parn</td>\n",
       "      <td>Pdcd6ip</td>\n",
       "      <td>Pcp4l1</td>\n",
       "      <td>4930511M06Rik</td>\n",
       "      <td>Pakap</td>\n",
       "      <td>Oxr1</td>\n",
       "      <td>P2rx1</td>\n",
       "      <td>Phf11d</td>\n",
       "      <td>Otub1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Gm15839</td>\n",
       "      <td>Gm17949</td>\n",
       "      <td>Gm12191</td>\n",
       "      <td>Ighv1-2</td>\n",
       "      <td>Pck2</td>\n",
       "      <td>Oscp1</td>\n",
       "      <td>Nsdhl</td>\n",
       "      <td>Pigp</td>\n",
       "      <td>Rcan3</td>\n",
       "      <td>P4hb</td>\n",
       "      <td>Pcyt2</td>\n",
       "      <td>Pdk1</td>\n",
       "      <td>Pdzd4</td>\n",
       "      <td>Phf20</td>\n",
       "      <td>Oser1</td>\n",
       "      <td>Pgpep1</td>\n",
       "      <td>Pak1ip1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Gm15854</td>\n",
       "      <td>Gm56538</td>\n",
       "      <td>Gm12312</td>\n",
       "      <td>Gm6430</td>\n",
       "      <td>Pabir1</td>\n",
       "      <td>Padi4</td>\n",
       "      <td>Nup205</td>\n",
       "      <td>Pdzd2</td>\n",
       "      <td>Pcyox1l</td>\n",
       "      <td>Pabpc1</td>\n",
       "      <td>Pced1b</td>\n",
       "      <td>Pet100</td>\n",
       "      <td>Ntn1</td>\n",
       "      <td>Phip</td>\n",
       "      <td>Otud6b</td>\n",
       "      <td>Phax</td>\n",
       "      <td>Pgghg</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>652</th>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>Agap3</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>653</th>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>Agl</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>654</th>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>Aig1</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>655</th>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>Aip</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>656</th>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>Ahr</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>657 rows × 17 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      PCA_1_69 PCA_1_48 PCA_1_35 PCA_1_64 PCA_1_0 PCA_1_14 PCA_1_62 PCA_1_36  \\\n",
       "0    Igkv2-116  Gm15544  Gm17812  Gm45555    Pbx1  Rasl11b      Pbk     Paxx   \n",
       "1      Gm56501  Gm15979  Gm49476  Gm42941   Pcbd2      Pcx     Rbm7    Pdcd7   \n",
       "2       Gm5628  Gm16213  Gm48261  Gm44745  Pcyt1b   P2ry13    Pias4     Phf8   \n",
       "3      Gm15839  Gm17949  Gm12191  Ighv1-2    Pck2    Oscp1    Nsdhl     Pigp   \n",
       "4      Gm15854  Gm56538  Gm12312   Gm6430  Pabir1    Padi4   Nup205    Pdzd2   \n",
       "..         ...      ...      ...      ...     ...      ...      ...      ...   \n",
       "652       None     None     None     None   Agap3     None     None     None   \n",
       "653       None     None     None     None     Agl     None     None     None   \n",
       "654       None     None     None     None    Aig1     None     None     None   \n",
       "655       None     None     None     None     Aip     None     None     None   \n",
       "656       None     None     None     None     Ahr     None     None     None   \n",
       "\n",
       "     PCA_1_7 PCA_1_16 PCA_1_9       PCA_1_17       PCA_1_22 PCA_1_37 PCA_1_13  \\\n",
       "0       Pbx3    Pcbp2    Pax5          Parp3           Patj    Patl1   Pdcd10   \n",
       "1       Pcca    Rcan1  Parpbp         Pced1a  4930513N10Rik    Rc3h1     Rbx1   \n",
       "2       Parn  Pdcd6ip  Pcp4l1  4930511M06Rik          Pakap     Oxr1    P2rx1   \n",
       "3      Rcan3     P4hb   Pcyt2           Pdk1          Pdzd4    Phf20    Oser1   \n",
       "4    Pcyox1l   Pabpc1  Pced1b         Pet100           Ntn1     Phip   Otud6b   \n",
       "..       ...      ...     ...            ...            ...      ...      ...   \n",
       "652     None     None    None           None           None     None     None   \n",
       "653     None     None    None           None           None     None     None   \n",
       "654     None     None    None           None           None     None     None   \n",
       "655     None     None    None           None           None     None     None   \n",
       "656     None     None    None           None           None     None     None   \n",
       "\n",
       "    PCA_1_39 PCA_1_60  \n",
       "0     Pdcd2l    Pcgf2  \n",
       "1    Otulinl    P2ry1  \n",
       "2     Phf11d    Otub1  \n",
       "3     Pgpep1  Pak1ip1  \n",
       "4       Phax    Pgghg  \n",
       "..       ...      ...  \n",
       "652     None     None  \n",
       "653     None     None  \n",
       "654     None     None  \n",
       "655     None     None  \n",
       "656     None     None  \n",
       "\n",
       "[657 rows x 17 columns]"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "david_enrich_sets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "2156926f-02e5-4031-9eee-00ea8d6116da",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2025-07-15 12:05:58,153 [WARNING] Duplicated values found in preranked stats: 3.57% of genes\n",
      "The order of those genes will be arbitrary, which may produce unexpected results.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "69, "
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2025-07-15 12:06:35,807 [ERROR] No gene sets passed through filtering condition !!! \n",
      "Hint 1: Try to lower min_size or increase max_size !\n",
      "Hint 2: Check gene symbols are identifiable to your gmt input.\n",
      "Hint 3: Gene symbols curated in Enrichr web services are all upcases.\n",
      "\n",
      "2025-07-15 12:06:35,808 [ERROR] The first entry of your gene_sets (gmt) look like this : { Reactome_Pathways_2024__2-LTR Circle Formation: [REV, XRCC5, XRCC6, XRCC4, PSIP1, LIG4, HMGA1, GAG, GAG-POL, VIF, VPR, BANF1, VPU]}\n",
      "2025-07-15 12:06:35,808 [ERROR] The first 5 genes look like this : [ GM8288, GM11545, CHCHD2-PS, GM45471, GM13196 ]\n"
     ]
    },
    {
     "ename": "LookupError",
     "evalue": "No gene sets passed through filtering condition !!! \nHint 1: Try to lower min_size or increase max_size !\nHint 2: Check gene symbols are identifiable to your gmt input.\nHint 3: Gene symbols curated in Enrichr web services are all upcases.\n",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mLookupError\u001b[0m                               Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[6], line 7\u001b[0m\n\u001b[1;32m      5\u001b[0m rank \u001b[38;5;241m=\u001b[39m aux[aux\u001b[38;5;241m.\u001b[39mnode_to_community\u001b[38;5;241m==\u001b[39mclu]\u001b[38;5;241m.\u001b[39msort_values(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124meg\u001b[39m\u001b[38;5;124m'\u001b[39m, ascending\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m)[[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124meg\u001b[39m\u001b[38;5;124m'\u001b[39m]]\n\u001b[1;32m      6\u001b[0m rank\u001b[38;5;241m.\u001b[39mindex \u001b[38;5;241m=\u001b[39m rank\u001b[38;5;241m.\u001b[39mindex\u001b[38;5;241m.\u001b[39mstr\u001b[38;5;241m.\u001b[39mupper()\n\u001b[0;32m----> 7\u001b[0m pre_enr_dict[clu] \u001b[38;5;241m=\u001b[39m \u001b[43mgp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mprerank\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrnk\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrank\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m      8\u001b[0m \u001b[43m                 \u001b[49m\u001b[43mgene_sets\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgene_sets\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m      9\u001b[0m \u001b[43m                 \u001b[49m\u001b[43mseed\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m42\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m     10\u001b[0m \u001b[43m                 \u001b[49m\u001b[43morganism\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mmouse\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m     11\u001b[0m \u001b[43m                 \u001b[49m\u001b[43moutdir\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m,\u001b[49m\u001b[38;5;66;43;03m#'/mnt/e/Karina_Borges_Project_004/enrichment',\u001b[39;49;00m\n\u001b[1;32m     12\u001b[0m \u001b[43m                 \u001b[49m\u001b[38;5;66;43;03m# background=background,\u001b[39;49;00m\n\u001b[1;32m     13\u001b[0m \u001b[43m                \u001b[49m\u001b[43m)\u001b[49m\n",
      "File \u001b[0;32m~/miniconda3/envs/gseapyEnv/lib/python3.10/site-packages/gseapy/__init__.py:396\u001b[0m, in \u001b[0;36mprerank\u001b[0;34m(rnk, gene_sets, outdir, pheno_pos, pheno_neg, min_size, max_size, permutation_num, weight, ascending, threads, figsize, format, graph_num, no_plot, seed, verbose, *arg, **kwargs)\u001b[0m\n\u001b[1;32m    375\u001b[0m     weight \u001b[38;5;241m=\u001b[39m kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mweighted_score_type\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m    377\u001b[0m pre \u001b[38;5;241m=\u001b[39m Prerank(\n\u001b[1;32m    378\u001b[0m     rnk,\n\u001b[1;32m    379\u001b[0m     gene_sets,\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m    394\u001b[0m     verbose,\n\u001b[1;32m    395\u001b[0m )\n\u001b[0;32m--> 396\u001b[0m \u001b[43mpre\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    397\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m pre\n",
      "File \u001b[0;32m~/miniconda3/envs/gseapyEnv/lib/python3.10/site-packages/gseapy/gsea.py:564\u001b[0m, in \u001b[0;36mPrerank.run\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m    562\u001b[0m \u001b[38;5;66;03m# filtering out gene sets and build gene sets dictionary\u001b[39;00m\n\u001b[1;32m    563\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_gene_isupper \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcheck_uppercase(gene_list\u001b[38;5;241m=\u001b[39mdat2\u001b[38;5;241m.\u001b[39mindex\u001b[38;5;241m.\u001b[39mvalues)\n\u001b[0;32m--> 564\u001b[0m gmt \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mload_gmt\u001b[49m\u001b[43m(\u001b[49m\u001b[43mgene_list\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdat2\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mindex\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mvalues\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgmt\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgene_sets\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    565\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mgmt \u001b[38;5;241m=\u001b[39m gmt\n\u001b[1;32m    566\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_logger\u001b[38;5;241m.\u001b[39minfo(\n\u001b[1;32m    567\u001b[0m     \u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m%04d\u001b[39;00m\u001b[38;5;124m gene_sets used for further statistical testing.....\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m%\u001b[39m \u001b[38;5;28mlen\u001b[39m(gmt)\n\u001b[1;32m    568\u001b[0m )\n",
      "File \u001b[0;32m~/miniconda3/envs/gseapyEnv/lib/python3.10/site-packages/gseapy/base.py:528\u001b[0m, in \u001b[0;36mGSEAbase.load_gmt\u001b[0;34m(self, gene_list, gmt)\u001b[0m\n\u001b[1;32m    520\u001b[0m     \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_logger\u001b[38;5;241m.\u001b[39merror(\n\u001b[1;32m    521\u001b[0m         \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mThe first entry of your gene_sets (gmt) look like this : \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    522\u001b[0m         \u001b[38;5;241m%\u001b[39m dict_head\n\u001b[1;32m    523\u001b[0m     )\n\u001b[1;32m    524\u001b[0m     \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_logger\u001b[38;5;241m.\u001b[39merror(\n\u001b[1;32m    525\u001b[0m         \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mThe first 5 genes look like this : [ \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m ]\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    526\u001b[0m         \u001b[38;5;241m%\u001b[39m (\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m, \u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mjoin(\u001b[38;5;28mlist\u001b[39m(gene_list)[:\u001b[38;5;241m5\u001b[39m]))\n\u001b[1;32m    527\u001b[0m     )\n\u001b[0;32m--> 528\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mLookupError\u001b[39;00m(msg)\n\u001b[1;32m    530\u001b[0m \u001b[38;5;66;03m# self._gmtdct = genesets_dict\u001b[39;00m\n\u001b[1;32m    531\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m genesets_dict\n",
      "\u001b[0;31mLookupError\u001b[0m: No gene sets passed through filtering condition !!! \nHint 1: Try to lower min_size or increase max_size !\nHint 2: Check gene symbols are identifiable to your gmt input.\nHint 3: Gene symbols curated in Enrichr web services are all upcases.\n"
     ]
    }
   ],
   "source": [
    "# gene_sets = ['Reactome_Pathways_2024','WikiPathways_2024_Mouse','KEGG_2019_Mouse','GO_Biological_Process_2025','GO_Cellular_Component_2025','GO_Molecular_Function_2025']\n",
    "# pre_enr_dict = dict()\n",
    "# for clu in [int(c.split('_')[-1]) for c in pcas_sig.columns[:-1]]:\n",
    "#     print(clu, end=', ')\n",
    "#     rank = aux[aux.node_to_community==clu].sort_values('eg', ascending=False)[['eg']]\n",
    "#     rank.index = rank.index.str.upper()\n",
    "#     pre_enr_dict[clu] = gp.prerank(rnk=rank,\n",
    "#                      gene_sets=gene_sets,\n",
    "#                      seed= 42,\n",
    "#                      organism='mouse',\n",
    "#                      outdir=None,#'/mnt/e/Karina_Borges_Project_004/enrichment',\n",
    "#                      # background=background,\n",
    "#                     )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "b4d42e6d-466e-47e5-903b-82c5f7d1a4b8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{}"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pre_enr_dict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 328,
   "id": "1da6a181-d7ec-4229-9db0-65debd9598f2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "31 (0, 10) | 42 (0, 10) | 25 (1, 10) | 36 (7, 10) | 0 (1, 10) | 8 (0, 10) | 6 (0, 10) | 17 (0, 10) | 11 (0, 10) | 33 (0, 10) | 41 (0, 10) | 15 (0, 10) | "
     ]
    }
   ],
   "source": [
    "for k,v in pre_enr_dict.items():\n",
    "    # v.res2d.sort_values('FDR q-val').drop('Name', axis=1).to_csv('/mnt/e/Karina_Borges_Project_004/gsea_rank_network_'+str(k)+'.csv', index=False)\n",
    "    print(k, v.res2d[v.res2d['FDR q-val']<=0.1].shape, end=' | ')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 326,
   "id": "7077955e-298f-4929-a7e0-f017f0cb7ea5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[31, 42, 25, 36, 0, 8, 6, 17, 11, 33, 41, 15]"
      ]
     },
     "execution_count": 326,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[int(c.split('_')[-1]) for c in pcas_sig.columns[:-1]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 279,
   "id": "876dbd50-feb7-4e2b-88cd-bc8bd7be3608",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2025-05-06 12:47:38,534 [WARNING] Duplicated values found in preranked stats: 34.36% of genes\n",
      "The order of those genes will be arbitrary, which may produce unexpected results.\n"
     ]
    }
   ],
   "source": [
    "pre_enr = gp.prerank(rnk=rank,\n",
    "                     gene_sets=gene_sets,\n",
    "                     seed= 42,\n",
    "                     organism='mouse',\n",
    "                     outdir=None,#'/mnt/e/Karina_Borges_Project_004/enrichment',\n",
    "                     # background=background,\n",
    "                    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "02d768bb-b9c2-43c5-a8a8-78b45a58186e",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "98e4a87b-b898-4b05-9933-3b461a0a4dea",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 303,
   "id": "c343011e-f76c-4d3b-a5f5-51c5a9b64b4b",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_64671/265812657.py:2: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  aux_sig['eg'] = aux_sig.index.map(nx.eigenvector_centrality(G, max_iter=200))\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Cond_knock_1_S1</th>\n",
       "      <th>Cond_knock_2_S2</th>\n",
       "      <th>Cond_knock_3_S3</th>\n",
       "      <th>Control_1_S4</th>\n",
       "      <th>Control_2_S5</th>\n",
       "      <th>Control_3_S6</th>\n",
       "      <th>node_to_community</th>\n",
       "      <th>node_color</th>\n",
       "      <th>eg</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gene_name</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Igkv2-116</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.284785</td>\n",
       "      <td>0.502837</td>\n",
       "      <td>0.266756</td>\n",
       "      <td>31</td>\n",
       "      <td>[0.180653, 0.701402, 0.488189, 1.0]</td>\n",
       "      <td>2.312866e-02</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm56501</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.019989</td>\n",
       "      <td>0.021478</td>\n",
       "      <td>0.022736</td>\n",
       "      <td>31</td>\n",
       "      <td>[0.180653, 0.701402, 0.488189, 1.0]</td>\n",
       "      <td>1.135253e-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm5628</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.153100</td>\n",
       "      <td>0.158068</td>\n",
       "      <td>0.113947</td>\n",
       "      <td>31</td>\n",
       "      <td>[0.180653, 0.701402, 0.488189, 1.0]</td>\n",
       "      <td>6.036153e-02</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm15839</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.099216</td>\n",
       "      <td>0.112231</td>\n",
       "      <td>0.112071</td>\n",
       "      <td>31</td>\n",
       "      <td>[0.180653, 0.701402, 0.488189, 1.0]</td>\n",
       "      <td>1.280994e-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm15854</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.066419</td>\n",
       "      <td>0.071125</td>\n",
       "      <td>0.075232</td>\n",
       "      <td>31</td>\n",
       "      <td>[0.180653, 0.701402, 0.488189, 1.0]</td>\n",
       "      <td>1.916924e-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm43461</th>\n",
       "      <td>0.991051</td>\n",
       "      <td>0.796289</td>\n",
       "      <td>0.851062</td>\n",
       "      <td>1.155092</td>\n",
       "      <td>1.132768</td>\n",
       "      <td>1.023603</td>\n",
       "      <td>11</td>\n",
       "      <td>[0.241237, 0.296485, 0.539709, 1.0]</td>\n",
       "      <td>5.552948e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Aif1</th>\n",
       "      <td>27.608239</td>\n",
       "      <td>27.646331</td>\n",
       "      <td>26.120582</td>\n",
       "      <td>32.604824</td>\n",
       "      <td>30.706026</td>\n",
       "      <td>32.356727</td>\n",
       "      <td>17</td>\n",
       "      <td>[0.182256, 0.426184, 0.55712, 1.0]</td>\n",
       "      <td>1.109122e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ahr</th>\n",
       "      <td>4.157689</td>\n",
       "      <td>4.488006</td>\n",
       "      <td>3.904987</td>\n",
       "      <td>4.333971</td>\n",
       "      <td>3.847109</td>\n",
       "      <td>3.997705</td>\n",
       "      <td>0</td>\n",
       "      <td>[0.267004, 0.004874, 0.329415, 1.0]</td>\n",
       "      <td>2.732012e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm43513</th>\n",
       "      <td>1.198966</td>\n",
       "      <td>1.189274</td>\n",
       "      <td>0.621206</td>\n",
       "      <td>1.095843</td>\n",
       "      <td>1.420132</td>\n",
       "      <td>1.347180</td>\n",
       "      <td>11</td>\n",
       "      <td>[0.241237, 0.296485, 0.539709, 1.0]</td>\n",
       "      <td>2.792524e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm43511</th>\n",
       "      <td>1.473935</td>\n",
       "      <td>1.363682</td>\n",
       "      <td>1.262349</td>\n",
       "      <td>1.696526</td>\n",
       "      <td>1.710662</td>\n",
       "      <td>1.614772</td>\n",
       "      <td>11</td>\n",
       "      <td>[0.241237, 0.296485, 0.539709, 1.0]</td>\n",
       "      <td>4.060406e-07</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5249 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           Cond_knock_1_S1  Cond_knock_2_S2  Cond_knock_3_S3  Control_1_S4  \\\n",
       "Gene_name                                                                    \n",
       "Igkv2-116         0.000000         0.000000         0.000000      0.284785   \n",
       "Gm56501           0.000000         0.000000         0.000000      0.019989   \n",
       "Gm5628            0.000000         0.000000         0.000000      0.153100   \n",
       "Gm15839           0.000000         0.000000         0.000000      0.099216   \n",
       "Gm15854           0.000000         0.000000         0.000000      0.066419   \n",
       "...                    ...              ...              ...           ...   \n",
       "Gm43461           0.991051         0.796289         0.851062      1.155092   \n",
       "Aif1             27.608239        27.646331        26.120582     32.604824   \n",
       "Ahr               4.157689         4.488006         3.904987      4.333971   \n",
       "Gm43513           1.198966         1.189274         0.621206      1.095843   \n",
       "Gm43511           1.473935         1.363682         1.262349      1.696526   \n",
       "\n",
       "           Control_2_S5  Control_3_S6  node_to_community  \\\n",
       "Gene_name                                                  \n",
       "Igkv2-116      0.502837      0.266756                 31   \n",
       "Gm56501        0.021478      0.022736                 31   \n",
       "Gm5628         0.158068      0.113947                 31   \n",
       "Gm15839        0.112231      0.112071                 31   \n",
       "Gm15854        0.071125      0.075232                 31   \n",
       "...                 ...           ...                ...   \n",
       "Gm43461        1.132768      1.023603                 11   \n",
       "Aif1          30.706026     32.356727                 17   \n",
       "Ahr            3.847109      3.997705                  0   \n",
       "Gm43513        1.420132      1.347180                 11   \n",
       "Gm43511        1.710662      1.614772                 11   \n",
       "\n",
       "                                    node_color            eg  \n",
       "Gene_name                                                     \n",
       "Igkv2-116  [0.180653, 0.701402, 0.488189, 1.0]  2.312866e-02  \n",
       "Gm56501    [0.180653, 0.701402, 0.488189, 1.0]  1.135253e-01  \n",
       "Gm5628     [0.180653, 0.701402, 0.488189, 1.0]  6.036153e-02  \n",
       "Gm15839    [0.180653, 0.701402, 0.488189, 1.0]  1.280994e-01  \n",
       "Gm15854    [0.180653, 0.701402, 0.488189, 1.0]  1.916924e-01  \n",
       "...                                        ...           ...  \n",
       "Gm43461    [0.241237, 0.296485, 0.539709, 1.0]  5.552948e-07  \n",
       "Aif1        [0.182256, 0.426184, 0.55712, 1.0]  1.109122e-07  \n",
       "Ahr        [0.267004, 0.004874, 0.329415, 1.0]  2.732012e-07  \n",
       "Gm43513    [0.241237, 0.296485, 0.539709, 1.0]  2.792524e-07  \n",
       "Gm43511    [0.241237, 0.296485, 0.539709, 1.0]  4.060406e-07  \n",
       "\n",
       "[5249 rows x 9 columns]"
      ]
     },
     "execution_count": 303,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "aux_sig = aux[aux.node_to_community.isin([int(clu.split('_')[-1]) for clu in pcas_sig.columns[:-1]])]\n",
    "aux_sig['eg'] = aux_sig.index.map(nx.eigenvector_centrality(G, max_iter=200))\n",
    "aux_sig['eg'] = aux_sig.index.map(nx.eigenvector_centrality(G, max_iter=200))\n",
    "aux_sig"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 301,
   "id": "0877ad1b-0c4a-43f7-81c7-6f87f23dc559",
   "metadata": {},
   "outputs": [],
   "source": [
    "# nx.eigenvector_centrality(G, max_iter=200)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "id": "bf4d529f-283b-4f1f-bea4-5bb388814813",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Cond_knock_1_S1</th>\n",
       "      <th>Cond_knock_2_S2</th>\n",
       "      <th>Cond_knock_3_S3</th>\n",
       "      <th>Control_1_S4</th>\n",
       "      <th>Control_2_S5</th>\n",
       "      <th>Control_3_S6</th>\n",
       "      <th>node_color</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>node_to_community</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>811</td>\n",
       "      <td>811</td>\n",
       "      <td>811</td>\n",
       "      <td>811</td>\n",
       "      <td>811</td>\n",
       "      <td>811</td>\n",
       "      <td>811</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>589</td>\n",
       "      <td>589</td>\n",
       "      <td>589</td>\n",
       "      <td>589</td>\n",
       "      <td>589</td>\n",
       "      <td>589</td>\n",
       "      <td>589</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>539</td>\n",
       "      <td>539</td>\n",
       "      <td>539</td>\n",
       "      <td>539</td>\n",
       "      <td>539</td>\n",
       "      <td>539</td>\n",
       "      <td>539</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>523</td>\n",
       "      <td>523</td>\n",
       "      <td>523</td>\n",
       "      <td>523</td>\n",
       "      <td>523</td>\n",
       "      <td>523</td>\n",
       "      <td>523</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>476</td>\n",
       "      <td>476</td>\n",
       "      <td>476</td>\n",
       "      <td>476</td>\n",
       "      <td>476</td>\n",
       "      <td>476</td>\n",
       "      <td>476</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>460</td>\n",
       "      <td>460</td>\n",
       "      <td>460</td>\n",
       "      <td>460</td>\n",
       "      <td>460</td>\n",
       "      <td>460</td>\n",
       "      <td>460</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>421</td>\n",
       "      <td>421</td>\n",
       "      <td>421</td>\n",
       "      <td>421</td>\n",
       "      <td>421</td>\n",
       "      <td>421</td>\n",
       "      <td>421</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>346</td>\n",
       "      <td>346</td>\n",
       "      <td>346</td>\n",
       "      <td>346</td>\n",
       "      <td>346</td>\n",
       "      <td>346</td>\n",
       "      <td>346</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>345</td>\n",
       "      <td>345</td>\n",
       "      <td>345</td>\n",
       "      <td>345</td>\n",
       "      <td>345</td>\n",
       "      <td>345</td>\n",
       "      <td>345</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>284</td>\n",
       "      <td>284</td>\n",
       "      <td>284</td>\n",
       "      <td>284</td>\n",
       "      <td>284</td>\n",
       "      <td>284</td>\n",
       "      <td>284</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>229</td>\n",
       "      <td>229</td>\n",
       "      <td>229</td>\n",
       "      <td>229</td>\n",
       "      <td>229</td>\n",
       "      <td>229</td>\n",
       "      <td>229</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>226</td>\n",
       "      <td>226</td>\n",
       "      <td>226</td>\n",
       "      <td>226</td>\n",
       "      <td>226</td>\n",
       "      <td>226</td>\n",
       "      <td>226</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   Cond_knock_1_S1  Cond_knock_2_S2  Cond_knock_3_S3  \\\n",
       "node_to_community                                                      \n",
       "0                              811              811              811   \n",
       "6                              589              589              589   \n",
       "8                              539              539              539   \n",
       "11                             523              523              523   \n",
       "15                             476              476              476   \n",
       "17                             460              460              460   \n",
       "25                             421              421              421   \n",
       "31                             346              346              346   \n",
       "33                             345              345              345   \n",
       "36                             284              284              284   \n",
       "41                             229              229              229   \n",
       "42                             226              226              226   \n",
       "\n",
       "                   Control_1_S4  Control_2_S5  Control_3_S6  node_color  \n",
       "node_to_community                                                        \n",
       "0                           811           811           811         811  \n",
       "6                           589           589           589         589  \n",
       "8                           539           539           539         539  \n",
       "11                          523           523           523         523  \n",
       "15                          476           476           476         476  \n",
       "17                          460           460           460         460  \n",
       "25                          421           421           421         421  \n",
       "31                          346           346           346         346  \n",
       "33                          345           345           345         345  \n",
       "36                          284           284           284         284  \n",
       "41                          229           229           229         229  \n",
       "42                          226           226           226         226  "
      ]
     },
     "execution_count": 134,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "aux[aux.node_to_community.isin([int(c.split('_')[-1]) for c in pcas_sig.columns[:-1]])].groupby('node_to_community').count()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c8efdb3c-87ba-42b7-82b1-3312b6b7d745",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "id": "dd460b64-2ad0-4bc6-81ed-a90ffdb1d2c0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Cond_knock_1_S1</th>\n",
       "      <th>Cond_knock_2_S2</th>\n",
       "      <th>Cond_knock_3_S3</th>\n",
       "      <th>Control_1_S4</th>\n",
       "      <th>Control_2_S5</th>\n",
       "      <th>Control_3_S6</th>\n",
       "      <th>node_to_community</th>\n",
       "      <th>node_color</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gene_name</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Aknad1</th>\n",
       "      <td>0.138709</td>\n",
       "      <td>0.118021</td>\n",
       "      <td>0.124546</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.039968</td>\n",
       "      <td>36</td>\n",
       "      <td>[0.369214, 0.788888, 0.382914, 1.0]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm4478</th>\n",
       "      <td>0.289722</td>\n",
       "      <td>0.324612</td>\n",
       "      <td>0.391680</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.163265</td>\n",
       "      <td>36</td>\n",
       "      <td>[0.369214, 0.788888, 0.382914, 1.0]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Semp2l1</th>\n",
       "      <td>0.034988</td>\n",
       "      <td>0.026263</td>\n",
       "      <td>0.031764</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.013143</td>\n",
       "      <td>36</td>\n",
       "      <td>[0.369214, 0.788888, 0.382914, 1.0]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ypel4</th>\n",
       "      <td>0.915778</td>\n",
       "      <td>0.983635</td>\n",
       "      <td>0.653728</td>\n",
       "      <td>0.337488</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.305179</td>\n",
       "      <td>36</td>\n",
       "      <td>[0.369214, 0.788888, 0.382914, 1.0]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gbp2b</th>\n",
       "      <td>0.030357</td>\n",
       "      <td>0.051261</td>\n",
       "      <td>0.027310</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.016156</td>\n",
       "      <td>0.017104</td>\n",
       "      <td>36</td>\n",
       "      <td>[0.369214, 0.788888, 0.382914, 1.0]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm43904</th>\n",
       "      <td>3.272348</td>\n",
       "      <td>4.644451</td>\n",
       "      <td>4.123595</td>\n",
       "      <td>2.857690</td>\n",
       "      <td>2.551485</td>\n",
       "      <td>2.705086</td>\n",
       "      <td>36</td>\n",
       "      <td>[0.369214, 0.788888, 0.382914, 1.0]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Agpat2</th>\n",
       "      <td>45.271928</td>\n",
       "      <td>46.028562</td>\n",
       "      <td>50.265844</td>\n",
       "      <td>33.139575</td>\n",
       "      <td>34.937011</td>\n",
       "      <td>32.475101</td>\n",
       "      <td>36</td>\n",
       "      <td>[0.369214, 0.788888, 0.382914, 1.0]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Agtr1a</th>\n",
       "      <td>1.416762</td>\n",
       "      <td>1.212730</td>\n",
       "      <td>1.490120</td>\n",
       "      <td>0.830203</td>\n",
       "      <td>1.164170</td>\n",
       "      <td>0.944311</td>\n",
       "      <td>36</td>\n",
       "      <td>[0.369214, 0.788888, 0.382914, 1.0]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm44292</th>\n",
       "      <td>0.092109</td>\n",
       "      <td>0.103673</td>\n",
       "      <td>0.082869</td>\n",
       "      <td>0.072986</td>\n",
       "      <td>0.058825</td>\n",
       "      <td>0.041514</td>\n",
       "      <td>36</td>\n",
       "      <td>[0.369214, 0.788888, 0.382914, 1.0]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm44509</th>\n",
       "      <td>2.178320</td>\n",
       "      <td>2.288973</td>\n",
       "      <td>2.378291</td>\n",
       "      <td>1.699924</td>\n",
       "      <td>1.862530</td>\n",
       "      <td>1.649259</td>\n",
       "      <td>36</td>\n",
       "      <td>[0.369214, 0.788888, 0.382914, 1.0]</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>284 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           Cond_knock_1_S1  Cond_knock_2_S2  Cond_knock_3_S3  Control_1_S4  \\\n",
       "Gene_name                                                                    \n",
       "Aknad1            0.138709         0.118021         0.124546      0.000000   \n",
       "Gm4478            0.289722         0.324612         0.391680      0.000000   \n",
       "Semp2l1           0.034988         0.026263         0.031764      0.000000   \n",
       "Ypel4             0.915778         0.983635         0.653728      0.337488   \n",
       "Gbp2b             0.030357         0.051261         0.027310      0.000000   \n",
       "...                    ...              ...              ...           ...   \n",
       "Gm43904           3.272348         4.644451         4.123595      2.857690   \n",
       "Agpat2           45.271928        46.028562        50.265844     33.139575   \n",
       "Agtr1a            1.416762         1.212730         1.490120      0.830203   \n",
       "Gm44292           0.092109         0.103673         0.082869      0.072986   \n",
       "Gm44509           2.178320         2.288973         2.378291      1.699924   \n",
       "\n",
       "           Control_2_S5  Control_3_S6  node_to_community  \\\n",
       "Gene_name                                                  \n",
       "Aknad1         0.000000      0.039968                 36   \n",
       "Gm4478         0.000000      0.163265                 36   \n",
       "Semp2l1        0.000000      0.013143                 36   \n",
       "Ypel4          0.000000      0.305179                 36   \n",
       "Gbp2b          0.016156      0.017104                 36   \n",
       "...                 ...           ...                ...   \n",
       "Gm43904        2.551485      2.705086                 36   \n",
       "Agpat2        34.937011     32.475101                 36   \n",
       "Agtr1a         1.164170      0.944311                 36   \n",
       "Gm44292        0.058825      0.041514                 36   \n",
       "Gm44509        1.862530      1.649259                 36   \n",
       "\n",
       "                                    node_color  \n",
       "Gene_name                                       \n",
       "Aknad1     [0.369214, 0.788888, 0.382914, 1.0]  \n",
       "Gm4478     [0.369214, 0.788888, 0.382914, 1.0]  \n",
       "Semp2l1    [0.369214, 0.788888, 0.382914, 1.0]  \n",
       "Ypel4      [0.369214, 0.788888, 0.382914, 1.0]  \n",
       "Gbp2b      [0.369214, 0.788888, 0.382914, 1.0]  \n",
       "...                                        ...  \n",
       "Gm43904    [0.369214, 0.788888, 0.382914, 1.0]  \n",
       "Agpat2     [0.369214, 0.788888, 0.382914, 1.0]  \n",
       "Agtr1a     [0.369214, 0.788888, 0.382914, 1.0]  \n",
       "Gm44292    [0.369214, 0.788888, 0.382914, 1.0]  \n",
       "Gm44509    [0.369214, 0.788888, 0.382914, 1.0]  \n",
       "\n",
       "[284 rows x 8 columns]"
      ]
     },
     "execution_count": 140,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "aux[aux.node_to_community==36]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "fa19a4ed-7fb0-4e80-bd3c-32ae3ac72d4a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Cond_knock_1_S1</th>\n",
       "      <th>Cond_knock_2_S2</th>\n",
       "      <th>Cond_knock_3_S3</th>\n",
       "      <th>Control_1_S4</th>\n",
       "      <th>Control_2_S5</th>\n",
       "      <th>Control_3_S6</th>\n",
       "      <th>node_to_community</th>\n",
       "      <th>node_color</th>\n",
       "      <th>node_positions_pos</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gene_name</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A830082N09Rik</th>\n",
       "      <td>0.324202</td>\n",
       "      <td>0.501322</td>\n",
       "      <td>0.147624</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.193743</td>\n",
       "      <td>5</td>\n",
       "      <td>[0.127568, 0.566949, 0.550556, 1.0]</td>\n",
       "      <td>[0.36578078096059663, 0.6057772224198277]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Henmt1</th>\n",
       "      <td>0.062067</td>\n",
       "      <td>0.104720</td>\n",
       "      <td>0.065852</td>\n",
       "      <td>0.048347</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5</td>\n",
       "      <td>[0.127568, 0.566949, 0.550556, 1.0]</td>\n",
       "      <td>[0.28680393645953306, 0.6157728875323466]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Bach2it1</th>\n",
       "      <td>0.436619</td>\n",
       "      <td>0.163096</td>\n",
       "      <td>0.524479</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.327905</td>\n",
       "      <td>5</td>\n",
       "      <td>[0.127568, 0.566949, 0.550556, 1.0]</td>\n",
       "      <td>[0.08135000228973858, 0.7283724554059003]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm47726</th>\n",
       "      <td>0.237596</td>\n",
       "      <td>1.065077</td>\n",
       "      <td>0.427754</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.268073</td>\n",
       "      <td>5</td>\n",
       "      <td>[0.127568, 0.566949, 0.550556, 1.0]</td>\n",
       "      <td>[0.3443319186327047, 0.5413039337033949]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm45355</th>\n",
       "      <td>0.340773</td>\n",
       "      <td>1.526739</td>\n",
       "      <td>1.226328</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.362196</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5</td>\n",
       "      <td>[0.127568, 0.566949, 0.550556, 1.0]</td>\n",
       "      <td>[0.3017278410715859, 0.5466957614421106]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm18451</th>\n",
       "      <td>0.052653</td>\n",
       "      <td>0.059239</td>\n",
       "      <td>0.049361</td>\n",
       "      <td>0.026091</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.059320</td>\n",
       "      <td>5</td>\n",
       "      <td>[0.127568, 0.566949, 0.550556, 1.0]</td>\n",
       "      <td>[0.14930621612503564, 0.6970805040732675]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gml</th>\n",
       "      <td>0.116528</td>\n",
       "      <td>0.130887</td>\n",
       "      <td>0.054902</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.131217</td>\n",
       "      <td>5</td>\n",
       "      <td>[0.127568, 0.566949, 0.550556, 1.0]</td>\n",
       "      <td>[0.192276826402942, 0.7153447929971576]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm17812</th>\n",
       "      <td>0.298552</td>\n",
       "      <td>0.669068</td>\n",
       "      <td>0.268596</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5</td>\n",
       "      <td>[0.127568, 0.566949, 0.550556, 1.0]</td>\n",
       "      <td>[0.31907175923171915, 0.5830097407139477]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm5896</th>\n",
       "      <td>0.049407</td>\n",
       "      <td>0.110223</td>\n",
       "      <td>0.044391</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.052176</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5</td>\n",
       "      <td>[0.127568, 0.566949, 0.550556, 1.0]</td>\n",
       "      <td>[0.28908595637823103, 0.5087460637945128]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm12737</th>\n",
       "      <td>0.077677</td>\n",
       "      <td>0.174340</td>\n",
       "      <td>0.139931</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5</td>\n",
       "      <td>[0.127568, 0.566949, 0.550556, 1.0]</td>\n",
       "      <td>[0.32769087545808856, 0.622081594858182]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Igkv14-126-1</th>\n",
       "      <td>0.256186</td>\n",
       "      <td>0.287196</td>\n",
       "      <td>0.230607</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.289212</td>\n",
       "      <td>5</td>\n",
       "      <td>[0.127568, 0.566949, 0.550556, 1.0]</td>\n",
       "      <td>[0.18310906173899463, 0.6742112440756035]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm23887</th>\n",
       "      <td>1.024835</td>\n",
       "      <td>1.147888</td>\n",
       "      <td>2.753898</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.088483</td>\n",
       "      <td>2.312625</td>\n",
       "      <td>5</td>\n",
       "      <td>[0.127568, 0.566949, 0.550556, 1.0]</td>\n",
       "      <td>[0.07113510589415718, 0.6896987448051896]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rps15a-ps6</th>\n",
       "      <td>0.638182</td>\n",
       "      <td>1.357835</td>\n",
       "      <td>0.762720</td>\n",
       "      <td>0.452962</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.717796</td>\n",
       "      <td>5</td>\n",
       "      <td>[0.127568, 0.566949, 0.550556, 1.0]</td>\n",
       "      <td>[0.381370673829017, 0.5564079270001242]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm49476</th>\n",
       "      <td>0.712722</td>\n",
       "      <td>0.798359</td>\n",
       "      <td>0.320494</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5</td>\n",
       "      <td>[0.127568, 0.566949, 0.550556, 1.0]</td>\n",
       "      <td>[0.33076279136770503, 0.6619634620743022]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Garin1a</th>\n",
       "      <td>0.082087</td>\n",
       "      <td>0.322995</td>\n",
       "      <td>0.184715</td>\n",
       "      <td>0.141757</td>\n",
       "      <td>0.131064</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5</td>\n",
       "      <td>[0.127568, 0.566949, 0.550556, 1.0]</td>\n",
       "      <td>[0.269552125666754, 0.5734919437839386]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gm45515</th>\n",
       "      <td>0.020556</td>\n",
       "      <td>0.046268</td>\n",
       "      <td>0.018494</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.046321</td>\n",
       "      <td>5</td>\n",
       "      <td>[0.127568, 0.566949, 0.550556, 1.0]</td>\n",
       "      <td>[0.2263927572864096, 0.6874510808350178]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gulo</th>\n",
       "      <td>0.019331</td>\n",
       "      <td>0.043513</td>\n",
       "      <td>0.052175</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.043562</td>\n",
       "      <td>5</td>\n",
       "      <td>[0.127568, 0.566949, 0.550556, 1.0]</td>\n",
       "      <td>[0.19004655407493407, 0.6348174476085355]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ahsg</th>\n",
       "      <td>0.036806</td>\n",
       "      <td>0.041388</td>\n",
       "      <td>0.066252</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.041460</td>\n",
       "      <td>5</td>\n",
       "      <td>[0.127568, 0.566949, 0.550556, 1.0]</td>\n",
       "      <td>[0.14817502791987258, 0.6449333820162519]</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               Cond_knock_1_S1  Cond_knock_2_S2  Cond_knock_3_S3  \\\n",
       "Gene_name                                                          \n",
       "A830082N09Rik         0.324202         0.501322         0.147624   \n",
       "Henmt1                0.062067         0.104720         0.065852   \n",
       "Bach2it1              0.436619         0.163096         0.524479   \n",
       "Gm47726               0.237596         1.065077         0.427754   \n",
       "Gm45355               0.340773         1.526739         1.226328   \n",
       "Gm18451               0.052653         0.059239         0.049361   \n",
       "Gml                   0.116528         0.130887         0.054902   \n",
       "Gm17812               0.298552         0.669068         0.268596   \n",
       "Gm5896                0.049407         0.110223         0.044391   \n",
       "Gm12737               0.077677         0.174340         0.139931   \n",
       "Igkv14-126-1          0.256186         0.287196         0.230607   \n",
       "Gm23887               1.024835         1.147888         2.753898   \n",
       "Rps15a-ps6            0.638182         1.357835         0.762720   \n",
       "Gm49476               0.712722         0.798359         0.320494   \n",
       "Garin1a               0.082087         0.322995         0.184715   \n",
       "Gm45515               0.020556         0.046268         0.018494   \n",
       "Gulo                  0.019331         0.043513         0.052175   \n",
       "Ahsg                  0.036806         0.041388         0.066252   \n",
       "\n",
       "               Control_1_S4  Control_2_S5  Control_3_S6  node_to_community  \\\n",
       "Gene_name                                                                    \n",
       "A830082N09Rik      0.000000      0.000000      0.193743                  5   \n",
       "Henmt1             0.048347      0.000000      0.000000                  5   \n",
       "Bach2it1           0.000000      0.000000      0.327905                  5   \n",
       "Gm47726            0.000000      0.000000      0.268073                  5   \n",
       "Gm45355            0.000000      0.362196      0.000000                  5   \n",
       "Gm18451            0.026091      0.000000      0.059320                  5   \n",
       "Gml                0.000000      0.000000      0.131217                  5   \n",
       "Gm17812            0.000000      0.000000      0.000000                  5   \n",
       "Gm5896             0.000000      0.052176      0.000000                  5   \n",
       "Gm12737            0.000000      0.000000      0.000000                  5   \n",
       "Igkv14-126-1       0.000000      0.000000      0.289212                  5   \n",
       "Gm23887            0.000000      1.088483      2.312625                  5   \n",
       "Rps15a-ps6         0.452962      0.000000      0.717796                  5   \n",
       "Gm49476            0.000000      0.000000      0.000000                  5   \n",
       "Garin1a            0.141757      0.131064      0.000000                  5   \n",
       "Gm45515            0.000000      0.000000      0.046321                  5   \n",
       "Gulo               0.000000      0.000000      0.043562                  5   \n",
       "Ahsg               0.000000      0.000000      0.041460                  5   \n",
       "\n",
       "                                        node_color  \\\n",
       "Gene_name                                            \n",
       "A830082N09Rik  [0.127568, 0.566949, 0.550556, 1.0]   \n",
       "Henmt1         [0.127568, 0.566949, 0.550556, 1.0]   \n",
       "Bach2it1       [0.127568, 0.566949, 0.550556, 1.0]   \n",
       "Gm47726        [0.127568, 0.566949, 0.550556, 1.0]   \n",
       "Gm45355        [0.127568, 0.566949, 0.550556, 1.0]   \n",
       "Gm18451        [0.127568, 0.566949, 0.550556, 1.0]   \n",
       "Gml            [0.127568, 0.566949, 0.550556, 1.0]   \n",
       "Gm17812        [0.127568, 0.566949, 0.550556, 1.0]   \n",
       "Gm5896         [0.127568, 0.566949, 0.550556, 1.0]   \n",
       "Gm12737        [0.127568, 0.566949, 0.550556, 1.0]   \n",
       "Igkv14-126-1   [0.127568, 0.566949, 0.550556, 1.0]   \n",
       "Gm23887        [0.127568, 0.566949, 0.550556, 1.0]   \n",
       "Rps15a-ps6     [0.127568, 0.566949, 0.550556, 1.0]   \n",
       "Gm49476        [0.127568, 0.566949, 0.550556, 1.0]   \n",
       "Garin1a        [0.127568, 0.566949, 0.550556, 1.0]   \n",
       "Gm45515        [0.127568, 0.566949, 0.550556, 1.0]   \n",
       "Gulo           [0.127568, 0.566949, 0.550556, 1.0]   \n",
       "Ahsg           [0.127568, 0.566949, 0.550556, 1.0]   \n",
       "\n",
       "                                      node_positions_pos  \n",
       "Gene_name                                                 \n",
       "A830082N09Rik  [0.36578078096059663, 0.6057772224198277]  \n",
       "Henmt1         [0.28680393645953306, 0.6157728875323466]  \n",
       "Bach2it1       [0.08135000228973858, 0.7283724554059003]  \n",
       "Gm47726         [0.3443319186327047, 0.5413039337033949]  \n",
       "Gm45355         [0.3017278410715859, 0.5466957614421106]  \n",
       "Gm18451        [0.14930621612503564, 0.6970805040732675]  \n",
       "Gml              [0.192276826402942, 0.7153447929971576]  \n",
       "Gm17812        [0.31907175923171915, 0.5830097407139477]  \n",
       "Gm5896         [0.28908595637823103, 0.5087460637945128]  \n",
       "Gm12737         [0.32769087545808856, 0.622081594858182]  \n",
       "Igkv14-126-1   [0.18310906173899463, 0.6742112440756035]  \n",
       "Gm23887        [0.07113510589415718, 0.6896987448051896]  \n",
       "Rps15a-ps6       [0.381370673829017, 0.5564079270001242]  \n",
       "Gm49476        [0.33076279136770503, 0.6619634620743022]  \n",
       "Garin1a          [0.269552125666754, 0.5734919437839386]  \n",
       "Gm45515         [0.2263927572864096, 0.6874510808350178]  \n",
       "Gulo           [0.19004655407493407, 0.6348174476085355]  \n",
       "Ahsg           [0.14817502791987258, 0.6449333820162519]  "
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "aux[aux.node_to_community==5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "id": "8a1b0a13-ae30-44a0-93d5-a75a63c63192",
   "metadata": {},
   "outputs": [],
   "source": [
    "node_to_community = dict(aux.node_to_community)\n",
    "node_color = dict(aux.node_color)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "id": "61a77d5c-0ee2-4475-a5f7-7beec18e2a33",
   "metadata": {},
   "outputs": [
    {
     "ename": "RecursionError",
     "evalue": "maximum recursion depth exceeded",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mRecursionError\u001b[0m                            Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[136], line 10\u001b[0m\n\u001b[1;32m      5\u001b[0m T \u001b[38;5;241m=\u001b[39m G\u001b[38;5;241m.\u001b[39mcopy()\n\u001b[1;32m      6\u001b[0m \u001b[38;5;66;03m# T = nx.minimum_spanning_tree(T, algorithm='kruskal')#, weight='weight')\u001b[39;00m\n\u001b[1;32m      7\u001b[0m \u001b[38;5;66;03m# T = nx.relabel_nodes(T, dict(aux.reset_index()['index']))\u001b[39;00m\n\u001b[1;32m      8\u001b[0m \u001b[38;5;66;03m# nodes_with_degree_gt = [node for node, degree in T.degree() if (degree >= 3) or (node in nodes2highlight)]\u001b[39;00m\n\u001b[1;32m      9\u001b[0m \u001b[38;5;66;03m# T = T.subgraph(nodes_with_degree_gt)\u001b[39;00m\n\u001b[0;32m---> 10\u001b[0m g \u001b[38;5;241m=\u001b[39m \u001b[43mGraph\u001b[49m\u001b[43m(\u001b[49m\u001b[43mT\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m     11\u001b[0m \u001b[43m          \u001b[49m\u001b[43mnode_color\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m{\u001b[49m\u001b[43mk\u001b[49m\u001b[43m:\u001b[49m\u001b[43mv\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mk\u001b[49m\u001b[43m,\u001b[49m\u001b[43mv\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mnode_color\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mitems\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mk\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mT\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mnodes\u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\u001b[38;5;66;43;03m#node_color,\u001b[39;49;00m\n\u001b[1;32m     12\u001b[0m \u001b[43m          \u001b[49m\u001b[43mnode_size\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m{\u001b[49m\u001b[43mk\u001b[49m\u001b[43m:\u001b[49m\u001b[38;5;241;43m2\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mk\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mT\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mnodes\u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\u001b[38;5;66;43;03m#node_size,\u001b[39;49;00m\n\u001b[1;32m     13\u001b[0m \u001b[43m          \u001b[49m\u001b[38;5;66;43;03m# node_shape={k:v for k,v in node_shape.items() if k in T.nodes},\u001b[39;49;00m\n\u001b[1;32m     14\u001b[0m \u001b[43m          \u001b[49m\u001b[43mnode_alpha\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m{\u001b[49m\u001b[43mk\u001b[49m\u001b[43m:\u001b[49m\u001b[38;5;241;43m0.95\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mk\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mT\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mnodes\u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\u001b[38;5;66;43;03m#node_alpha,\u001b[39;49;00m\n\u001b[1;32m     15\u001b[0m \u001b[43m          \u001b[49m\u001b[38;5;66;43;03m# node_edge_width={k:v for k,v in node_edge_width.items() if k in T.nodes},#node_edge_width,\u001b[39;49;00m\n\u001b[1;32m     16\u001b[0m \u001b[43m          \u001b[49m\u001b[43medge_alpha\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m0.25\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m     17\u001b[0m \u001b[43m          \u001b[49m\u001b[43medge_width\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m.5\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m     18\u001b[0m \u001b[43m          \u001b[49m\u001b[43mnode_zorder\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\u001b[38;5;66;43;03m#{k:v for k,v in node_zorder.items() if k in T.nodes},#node_zorder,\u001b[39;49;00m\n\u001b[1;32m     19\u001b[0m \u001b[43m          \u001b[49m\u001b[43medge_zorder\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m,\u001b[49m\u001b[38;5;66;43;03m#node_edge_width=0, \u001b[39;49;00m\n\u001b[1;32m     20\u001b[0m \u001b[43m          \u001b[49m\u001b[43mnode_layout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mcommunity\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[38;5;66;43;03m#node_positions_pos,#\u001b[39;49;00m\n\u001b[1;32m     21\u001b[0m \u001b[43m          \u001b[49m\u001b[43mnode_layout_kwargs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mdict\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mnode_to_community\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m{\u001b[49m\u001b[43mk\u001b[49m\u001b[43m:\u001b[49m\u001b[43mv\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mk\u001b[49m\u001b[43m,\u001b[49m\u001b[43mv\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mnode_to_community\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mitems\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mk\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mT\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mnodes\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m     22\u001b[0m \u001b[43m          \u001b[49m\u001b[38;5;66;43;03m# node_labels={n:n for n in nodes2highlight},\u001b[39;49;00m\n\u001b[1;32m     23\u001b[0m \u001b[43m          \u001b[49m\u001b[38;5;66;43;03m# node_label_fontdict=dict(size=10,  color='black', fontweight='bold', style='italic', ha='center' ),#backgroundcolor='gray')bbox=dict(facecolor='red', alpha=0.5)\u001b[39;49;00m\n\u001b[1;32m     24\u001b[0m \u001b[43m          \u001b[49m\u001b[43medge_layout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mbundled\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[38;5;66;43;03m#edge_paths_pos,#\u001b[39;49;00m\n\u001b[1;32m     25\u001b[0m \u001b[43m          \u001b[49m\u001b[38;5;66;43;03m# edge_layout='curved',\u001b[39;49;00m\n\u001b[1;32m     26\u001b[0m \u001b[43m          \u001b[49m\u001b[38;5;66;43;03m# node_layout='radial',\u001b[39;49;00m\n\u001b[1;32m     27\u001b[0m \u001b[43m          \u001b[49m\u001b[38;5;66;43;03m# scale=(1.5,1.5),#origin=(-10,-10),\u001b[39;49;00m\n\u001b[1;32m     28\u001b[0m \u001b[43m      \u001b[49m\u001b[43max\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43max\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m     29\u001b[0m \u001b[43m      \u001b[49m\u001b[38;5;66;43;03m# node_labels=pathways_subcluster,\u001b[39;49;00m\n\u001b[1;32m     30\u001b[0m \u001b[43m      \u001b[49m\u001b[38;5;66;43;03m# edge_layout='bundled', edge_layout_kwargs=dict(k=5,),\u001b[39;49;00m\n\u001b[1;32m     31\u001b[0m \u001b[43m      \u001b[49m\u001b[38;5;66;43;03m# edge_layout_kwargs={'k': 500, 'total_cycles': 6},#dict(k=2000), \u001b[39;49;00m\n\u001b[1;32m     32\u001b[0m \u001b[43m      \u001b[49m\u001b[38;5;66;43;03m# \u001b[39;49;00m\n\u001b[1;32m     33\u001b[0m \u001b[43m)\u001b[49m\n\u001b[1;32m     35\u001b[0m texts \u001b[38;5;241m=\u001b[39m []\n\u001b[1;32m     36\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m clu \u001b[38;5;129;01min\u001b[39;00m aux\u001b[38;5;241m.\u001b[39mnode_to_community\u001b[38;5;241m.\u001b[39munique():\n",
      "File \u001b[0;32m/mnt/d/hkg_wsl_env/lib/python3.12/site-packages/netgraph/_main.py:1408\u001b[0m, in \u001b[0;36mGraph.__init__\u001b[0;34m(self, graph, edge_cmap, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1405\u001b[0m     kwargs\u001b[38;5;241m.\u001b[39msetdefault(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124medge_zorder\u001b[39m\u001b[38;5;124m'\u001b[39m, edge_zorder)\n\u001b[1;32m   1406\u001b[0m     kwargs\u001b[38;5;241m.\u001b[39msetdefault(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnode_zorder\u001b[39m\u001b[38;5;124m'\u001b[39m, node_zorder)\n\u001b[0;32m-> 1408\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43medges\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
      "File \u001b[0;32m/mnt/d/hkg_wsl_env/lib/python3.12/site-packages/netgraph/_main.py:317\u001b[0m, in \u001b[0;36mBaseGraph.__init__\u001b[0;34m(self, edges, nodes, node_layout, node_layout_kwargs, node_shape, node_size, node_edge_width, node_color, node_edge_color, node_alpha, node_zorder, node_labels, node_label_offset, node_label_fontdict, edge_width, edge_color, edge_alpha, edge_zorder, arrows, edge_layout, edge_layout_kwargs, edge_labels, edge_label_position, edge_label_rotate, edge_label_fontdict, origin, scale, prettify, ax, *args, **kwargs)\u001b[0m\n\u001b[1;32m    315\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39morigin \u001b[38;5;241m=\u001b[39m origin\n\u001b[1;32m    316\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mscale \u001b[38;5;241m=\u001b[39m scale\n\u001b[0;32m--> 317\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mnode_positions \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_initialize_node_layout\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m    318\u001b[0m \u001b[43m    \u001b[49m\u001b[43mnode_layout\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnode_layout_kwargs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43morigin\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mscale\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnode_size\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    320\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39medge_paths, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39medge_layout, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39medge_layout_kwargs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_initialize_edge_layout(\n\u001b[1;32m    321\u001b[0m     edge_layout, edge_layout_kwargs, origin, scale, edge_width)\n\u001b[1;32m    323\u001b[0m \u001b[38;5;66;03m# Draw plot elements\u001b[39;00m\n",
      "File \u001b[0;32m/mnt/d/hkg_wsl_env/lib/python3.12/site-packages/netgraph/_main.py:460\u001b[0m, in \u001b[0;36mBaseGraph._initialize_node_layout\u001b[0;34m(self, node_layout, node_layout_kwargs, origin, scale, node_size)\u001b[0m\n\u001b[1;32m    458\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m (node_layout \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mspring\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;129;01mor\u001b[39;00m (node_layout \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdot\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;129;01mor\u001b[39;00m (node_layout \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mradial\u001b[39m\u001b[38;5;124m'\u001b[39m):\n\u001b[1;32m    459\u001b[0m         node_layout_kwargs\u001b[38;5;241m.\u001b[39msetdefault(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnode_size\u001b[39m\u001b[38;5;124m'\u001b[39m, node_size)\n\u001b[0;32m--> 460\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_node_positions\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnode_layout\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnode_layout_kwargs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43morigin\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mscale\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    462\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(node_layout, \u001b[38;5;28mdict\u001b[39m):\n\u001b[1;32m    463\u001b[0m     \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_check_completeness(\u001b[38;5;28mset\u001b[39m(node_layout), \u001b[38;5;28mset\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mnodes), \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnode_layout\u001b[39m\u001b[38;5;124m'\u001b[39m)\n",
      "File \u001b[0;32m/mnt/d/hkg_wsl_env/lib/python3.12/site-packages/netgraph/_main.py:477\u001b[0m, in \u001b[0;36mBaseGraph._get_node_positions\u001b[0;34m(self, node_layout, node_layout_kwargs, origin, scale)\u001b[0m\n\u001b[1;32m    475\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m node_positions\n\u001b[1;32m    476\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m node_layout \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mcommunity\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[0;32m--> 477\u001b[0m     node_positions \u001b[38;5;241m=\u001b[39m \u001b[43mget_community_layout\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m    478\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43medges\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnodes\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mnodes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43morigin\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43morigin\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mscale\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mscale\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mnode_layout_kwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    479\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(node_positions) \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m3\u001b[39m: \u001b[38;5;66;03m# Qhull fails for 2 or less nodes\u001b[39;00m\n\u001b[1;32m    480\u001b[0m         node_positions \u001b[38;5;241m=\u001b[39m _remove_node_overlap(node_positions, node_size\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mnode_size, origin\u001b[38;5;241m=\u001b[39morigin, scale\u001b[38;5;241m=\u001b[39mscale)\n",
      "File \u001b[0;32m/mnt/d/hkg_wsl_env/lib/python3.12/site-packages/netgraph/_node_layout.py:54\u001b[0m, in \u001b[0;36m_handle_multiple_components.<locals>.wrapped_layout_function\u001b[0;34m(edges, nodes, *args, **kwargs)\u001b[0m\n\u001b[1;32m     49\u001b[0m \u001b[38;5;129m@wraps\u001b[39m(layout_function)\n\u001b[1;32m     50\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrapped_layout_function\u001b[39m(edges, nodes\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m     51\u001b[0m \n\u001b[1;32m     52\u001b[0m     \u001b[38;5;66;03m# determine if there are more than one component\u001b[39;00m\n\u001b[1;32m     53\u001b[0m     adjacency_list \u001b[38;5;241m=\u001b[39m _edge_list_to_adjacency_list(edges, directed\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m)\n\u001b[0;32m---> 54\u001b[0m     components \u001b[38;5;241m=\u001b[39m \u001b[43m_get_connected_components\u001b[49m\u001b[43m(\u001b[49m\u001b[43madjacency_list\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m     56\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m nodes:\n\u001b[1;32m     57\u001b[0m         unconnected_nodes \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mset\u001b[39m(nodes) \u001b[38;5;241m-\u001b[39m \u001b[38;5;28mset\u001b[39m(_get_unique_nodes(edges))\n",
      "File \u001b[0;32m/mnt/d/hkg_wsl_env/lib/python3.12/site-packages/netgraph/_utils.py:596\u001b[0m, in \u001b[0;36m_get_connected_components\u001b[0;34m(adjacency_list)\u001b[0m\n\u001b[1;32m    594\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m not_visited: \u001b[38;5;66;03m# i.e. while stack is non-empty (empty set is interpreted as `False`)\u001b[39;00m\n\u001b[1;32m    595\u001b[0m     start \u001b[38;5;241m=\u001b[39m not_visited\u001b[38;5;241m.\u001b[39mpop()\n\u001b[0;32m--> 596\u001b[0m     component \u001b[38;5;241m=\u001b[39m \u001b[43m_dfs\u001b[49m\u001b[43m(\u001b[49m\u001b[43madjacency_list\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstart\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    597\u001b[0m     components\u001b[38;5;241m.\u001b[39mappend(component)\n\u001b[1;32m    599\u001b[0m     \u001b[38;5;66;03m#  remove nodes that are in the component that we just found\u001b[39;00m\n",
      "File \u001b[0;32m/mnt/d/hkg_wsl_env/lib/python3.12/site-packages/netgraph/_utils.py:642\u001b[0m, in \u001b[0;36m_dfs\u001b[0;34m(adjacency_list, start, visited)\u001b[0m\n\u001b[1;32m    640\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m node \u001b[38;5;129;01min\u001b[39;00m adjacency_list[start] \u001b[38;5;241m-\u001b[39m visited:\n\u001b[1;32m    641\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m node \u001b[38;5;129;01min\u001b[39;00m adjacency_list:\n\u001b[0;32m--> 642\u001b[0m         \u001b[43m_dfs\u001b[49m\u001b[43m(\u001b[49m\u001b[43madjacency_list\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnode\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvisited\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    643\u001b[0m     \u001b[38;5;28;01melse\u001b[39;00m: \u001b[38;5;66;03m# otherwise no outgoing edge\u001b[39;00m\n\u001b[1;32m    644\u001b[0m         visited\u001b[38;5;241m.\u001b[39madd(node)\n",
      "File \u001b[0;32m/mnt/d/hkg_wsl_env/lib/python3.12/site-packages/netgraph/_utils.py:642\u001b[0m, in \u001b[0;36m_dfs\u001b[0;34m(adjacency_list, start, visited)\u001b[0m\n\u001b[1;32m    640\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m node \u001b[38;5;129;01min\u001b[39;00m adjacency_list[start] \u001b[38;5;241m-\u001b[39m visited:\n\u001b[1;32m    641\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m node \u001b[38;5;129;01min\u001b[39;00m adjacency_list:\n\u001b[0;32m--> 642\u001b[0m         \u001b[43m_dfs\u001b[49m\u001b[43m(\u001b[49m\u001b[43madjacency_list\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnode\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvisited\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    643\u001b[0m     \u001b[38;5;28;01melse\u001b[39;00m: \u001b[38;5;66;03m# otherwise no outgoing edge\u001b[39;00m\n\u001b[1;32m    644\u001b[0m         visited\u001b[38;5;241m.\u001b[39madd(node)\n",
      "    \u001b[0;31m[... skipping similar frames: _dfs at line 642 (2968 times)]\u001b[0m\n",
      "File \u001b[0;32m/mnt/d/hkg_wsl_env/lib/python3.12/site-packages/netgraph/_utils.py:642\u001b[0m, in \u001b[0;36m_dfs\u001b[0;34m(adjacency_list, start, visited)\u001b[0m\n\u001b[1;32m    640\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m node \u001b[38;5;129;01min\u001b[39;00m adjacency_list[start] \u001b[38;5;241m-\u001b[39m visited:\n\u001b[1;32m    641\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m node \u001b[38;5;129;01min\u001b[39;00m adjacency_list:\n\u001b[0;32m--> 642\u001b[0m         \u001b[43m_dfs\u001b[49m\u001b[43m(\u001b[49m\u001b[43madjacency_list\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnode\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvisited\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    643\u001b[0m     \u001b[38;5;28;01melse\u001b[39;00m: \u001b[38;5;66;03m# otherwise no outgoing edge\u001b[39;00m\n\u001b[1;32m    644\u001b[0m         visited\u001b[38;5;241m.\u001b[39madd(node)\n",
      "\u001b[0;31mRecursionError\u001b[0m: maximum recursion depth exceeded"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl0AAAJMCAYAAADACBMVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAgE0lEQVR4nO3df2zX9Z3A8VehtFXv2kWYFQRZ2emNjcwdJTDgyLKd1qBxx2UXWbyIepqs2XYIPb3BuOggJs12mbm5WdwmaJagR/wZ/+g5m+wOq3A/4IpZBomLcBa2VlKMLequCHzuD0PvuhbHt7Yv2vF4JN8/vu+9P9/v++vbjqefz5dPy4qiKAIAgDE16VwvAADgfCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKUHF0vvvhi3HDDDTFjxowoKyuLZ5999nces2PHjqivr4+qqqqYM2dOPPTQQyNZKwDAhFVydL3zzjtx1VVXxQ9+8IOzmn/w4MG47rrrYtmyZdHR0RHf/OY3Y/Xq1fHUU0+VvFgAgImq7MP8wuuysrJ45plnYsWKFWec841vfCOee+652L9//8BYY2NjvPLKK7Fr166RvjUAwIRSPtZvsGvXrmhoaBg0du2118aWLVvivffeiylTpgw5pr+/P/r7+weenzp1Kt58882YOnVqlJWVjfWSAYDzWFEUcezYsZgxY0ZMmjR6X38f8+jq7u6O2traQWO1tbVx4sSJ6OnpienTpw85prm5OTZu3DjWSwMAOKNDhw7FzJkzR+31xjy6ImLI2anTVzTPdNZq/fr10dTUNPC8t7c3Lr/88jh06FBUV1eP3UIBgPNeX19fzJo1K/7wD/9wVF93zKPr0ksvje7u7kFjR44cifLy8pg6deqwx1RWVkZlZeWQ8erqatEFAKQY7a80jfl9uhYvXhxtbW2Dxl544YVYsGDBsN/nAgD4fVRydL399tuxd+/e2Lt3b0S8f0uIvXv3RmdnZ0S8f2lw1apVA/MbGxvj9ddfj6ampti/f39s3bo1tmzZEnfdddfofAIAgAmg5MuLu3fvjs9//vMDz09/9+qWW26JRx99NLq6ugYCLCKirq4uWltbY+3atfHggw/GjBkz4oEHHogvfelLo7B8AICJ4UPdpytLX19f1NTURG9vr+90AQBjaqy6w+9eBABIILoAABKILgCABKILACCB6AIASCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKILgCABKILACCB6AIASCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKILgCABKILACCB6AIASCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKILgCABKILACCB6AIASCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKILgCABKILACCB6AIASCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKILgCABKILACCB6AIASCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKILgCABKILACCB6AIASCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKILgCABKILACCB6AIASCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIMKLoamlpibq6uqiqqor6+vpob2//wPnbtm2Lq666Ki688MKYPn163HbbbXH06NERLRgAYCIqObq2b98ea9asiQ0bNkRHR0csW7Ysli9fHp2dncPOf+mll2LVqlVx++23xy9+8Yt44okn4j//8z/jjjvu+NCLBwCYKEqOrvvvvz9uv/32uOOOO2Lu3Lnxj//4jzFr1qzYvHnzsPP/7d/+LT72sY/F6tWro66uLv70T/80vvKVr8Tu3bs/9OIBACaKkqLr+PHjsWfPnmhoaBg03tDQEDt37hz2mCVLlsThw4ejtbU1iqKIN954I5588sm4/vrrz/g+/f390dfXN+gBADCRlRRdPT09cfLkyaitrR00XltbG93d3cMes2TJkti2bVusXLkyKioq4tJLL42PfOQj8f3vf/+M79Pc3Bw1NTUDj1mzZpWyTACAcWdEX6QvKysb9LwoiiFjp+3bty9Wr14d99xzT+zZsyeef/75OHjwYDQ2Np7x9devXx+9vb0Dj0OHDo1kmQAA40Z5KZOnTZsWkydPHnJW68iRI0POfp3W3NwcS5cujbvvvjsiIj796U/HRRddFMuWLYv77rsvpk+fPuSYysrKqKysLGVpAADjWklnuioqKqK+vj7a2toGjbe1tcWSJUuGPebdd9+NSZMGv83kyZMj4v0zZAAA54OSLy82NTXFww8/HFu3bo39+/fH2rVro7Ozc+By4fr162PVqlUD82+44YZ4+umnY/PmzXHgwIF4+eWXY/Xq1bFw4cKYMWPG6H0SAIBxrKTLixERK1eujKNHj8amTZuiq6sr5s2bF62trTF79uyIiOjq6hp0z65bb701jh07Fj/4wQ/ib//2b+MjH/lIfOELX4hvf/vbo/cpAADGubJiAlzj6+vri5qamujt7Y3q6upzvRwA4PfYWHWH370IAJBAdAEAJBBdAAAJRBcAQALRBQCQQHQBACQQXQAACUQXAEAC0QUAkEB0AQAkEF0AAAlEFwBAAtEFAJBAdAEAJBBdAAAJRBcAQALRBQCQQHQBACQQXQAACUQXAEAC0QUAkEB0AQAkEF0AAAlEFwBAAtEFAJBAdAEAJBBdAAAJRBcAQALRBQCQQHQBACQQXQAACUQXAEAC0QUAkEB0AQAkEF0AAAlEFwBAAtEFAJBAdAEAJBBdAAAJRBcAQALRBQCQQHQBACQQXQAACUQXAEAC0QUAkEB0AQAkEF0AAAlEFwBAAtEFAJBAdAEAJBBdAAAJRBcAQALRBQCQQHQBACQQXQAACUQXAEAC0QUAkEB0AQAkEF0AAAlEFwBAAtEFAJBAdAEAJBBdAAAJRBcAQALRBQCQQHQBACQQXQAACUQXAEAC0QUAkEB0AQAkEF0AAAlEFwBAAtEFAJBAdAEAJBBdAAAJRBcAQALRBQCQQHQBACQQXQAACUQXAEAC0QUAkEB0AQAkEF0AAAlEFwBAAtEFAJBAdAEAJBBdAAAJRBcAQALRBQCQQHQBACQQXQAACUQXAEAC0QUAkEB0AQAkEF0AAAlEFwBAAtEFAJBgRNHV0tISdXV1UVVVFfX19dHe3v6B8/v7+2PDhg0xe/bsqKysjI9//OOxdevWES0YAGAiKi/1gO3bt8eaNWuipaUlli5dGj/84Q9j+fLlsW/fvrj88suHPebGG2+MN954I7Zs2RJ/9Ed/FEeOHIkTJ0586MUDAEwUZUVRFKUcsGjRopg/f35s3rx5YGzu3LmxYsWKaG5uHjL/+eefjy9/+ctx4MCBuPjii0e0yL6+vqipqYne3t6orq4e0WsAAJyNseqOki4vHj9+PPbs2RMNDQ2DxhsaGmLnzp3DHvPcc8/FggUL4jvf+U5cdtllceWVV8Zdd90Vv/nNb874Pv39/dHX1zfoAQAwkZV0ebGnpydOnjwZtbW1g8Zra2uju7t72GMOHDgQL730UlRVVcUzzzwTPT098dWvfjXefPPNM36vq7m5OTZu3FjK0gAAxrURfZG+rKxs0POiKIaMnXbq1KkoKyuLbdu2xcKFC+O6666L+++/Px599NEznu1av3599Pb2DjwOHTo0kmUCAIwbJZ3pmjZtWkyePHnIWa0jR44MOft12vTp0+Oyyy6LmpqagbG5c+dGURRx+PDhuOKKK4YcU1lZGZWVlaUsDQBgXCvpTFdFRUXU19dHW1vboPG2trZYsmTJsMcsXbo0fv3rX8fbb789MPbqq6/GpEmTYubMmSNYMgDAxFPy5cWmpqZ4+OGHY+vWrbF///5Yu3ZtdHZ2RmNjY0S8f2lw1apVA/NvuummmDp1atx2222xb9++ePHFF+Puu++Ov/7rv44LLrhg9D4JAMA4VvJ9ulauXBlHjx6NTZs2RVdXV8ybNy9aW1tj9uzZERHR1dUVnZ2dA/P/4A/+INra2uJv/uZvYsGCBTF16tS48cYb47777hu9TwEAMM6VfJ+uc8F9ugCALOPiPl0AAIyM6AIASCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKILgCABKILACCB6AIASCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKILgCABKILACCB6AIASCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKILgCABKILACCB6AIASCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKILgCABKILACCB6AIASCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKILgCABKILACCB6AIASCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKILgCABKILACCB6AIASCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKILgCABKILACCB6AIASCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKILgCABCOKrpaWlqirq4uqqqqor6+P9vb2szru5ZdfjvLy8vjMZz4zkrcFAJiwSo6u7du3x5o1a2LDhg3R0dERy5Yti+XLl0dnZ+cHHtfb2xurVq2KP/uzPxvxYgEAJqqyoiiKUg5YtGhRzJ8/PzZv3jwwNnfu3FixYkU0Nzef8bgvf/nLccUVV8TkyZPj2Wefjb179571e/b19UVNTU309vZGdXV1KcsFACjJWHVHSWe6jh8/Hnv27ImGhoZB4w0NDbFz584zHvfII4/Ea6+9Fvfee+/IVgkAMMGVlzK5p6cnTp48GbW1tYPGa2tro7u7e9hjfvnLX8a6deuivb09ysvP7u36+/ujv79/4HlfX18pywQAGHdG9EX6srKyQc+LohgyFhFx8uTJuOmmm2Ljxo1x5ZVXnvXrNzc3R01NzcBj1qxZI1kmAMC4UVJ0TZs2LSZPnjzkrNaRI0eGnP2KiDh27Fjs3r07vv71r0d5eXmUl5fHpk2b4pVXXony8vL42c9+Nuz7rF+/Pnp7ewcehw4dKmWZAADjTkmXFysqKqK+vj7a2triL/7iLwbG29ra4s///M+HzK+uro6f//zng8ZaWlriZz/7WTz55JNRV1c37PtUVlZGZWVlKUsDABjXSoquiIimpqa4+eabY8GCBbF48eL40Y9+FJ2dndHY2BgR75+l+tWvfhU/+clPYtKkSTFv3rxBx19yySVRVVU1ZBwA4PdZydG1cuXKOHr0aGzatCm6urpi3rx50draGrNnz46IiK6urt95zy4AgPNNyffpOhfcpwsAyDIu7tMFAMDIiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKILgCABKILACCB6AIASCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKILgCABKILACCB6AIASCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKILgCABKILACCB6AIASCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKILgCABKILACCB6AIASCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKILgCABKILACCB6AIASCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKILgCABKILACCB6AIASCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKILgCABKILACCB6AIASCC6AAASiC4AgASiCwAggegCAEggugAAEoguAIAEogsAIIHoAgBIILoAABKILgCABKILACCB6AIASCC6AAASjCi6Wlpaoq6uLqqqqqK+vj7a29vPOPfpp5+Oa665Jj760Y9GdXV1LF68OH7605+OeMEAABNRydG1ffv2WLNmTWzYsCE6Ojpi2bJlsXz58ujs7Bx2/osvvhjXXHNNtLa2xp49e+Lzn/983HDDDdHR0fGhFw8AMFGUFUVRlHLAokWLYv78+bF58+aBsblz58aKFSuiubn5rF7jU5/6VKxcuTLuueees5rf19cXNTU10dvbG9XV1aUsFwCgJGPVHSWd6Tp+/Hjs2bMnGhoaBo03NDTEzp07z+o1Tp06FceOHYuLL774jHP6+/ujr69v0AMAYCIrKbp6enri5MmTUVtbO2i8trY2uru7z+o1vvvd78Y777wTN9544xnnNDc3R01NzcBj1qxZpSwTAGDcGdEX6cvKygY9L4piyNhwHn/88fjWt74V27dvj0suueSM89avXx+9vb0Dj0OHDo1kmQAA40Z5KZOnTZsWkydPHnJW68iRI0POfv227du3x+233x5PPPFEXH311R84t7KyMiorK0tZGgDAuFbSma6Kioqor6+Ptra2QeNtbW2xZMmSMx73+OOPx6233hqPPfZYXH/99SNbKQDABFbSma6IiKamprj55ptjwYIFsXjx4vjRj34UnZ2d0djYGBHvXxr81a9+FT/5yU8i4v3gWrVqVXzve9+Lz372swNnyS644IKoqakZxY8CADB+lRxdK1eujKNHj8amTZuiq6sr5s2bF62trTF79uyIiOjq6hp0z64f/vCHceLEifja174WX/va1wbGb7nllnj00Uc//CcAAJgASr5P17ngPl0AQJZxcZ8uAABGRnQBACQQXQAACUQXAEAC0QUAkEB0AQAkEF0AAAlEFwBAAtEFAJBAdAEAJBBdAAAJRBcAQALRBQCQQHQBACQQXQAACUQXAEAC0QUAkEB0AQAkEF0AAAlEFwBAAtEFAJBAdAEAJBBdAAAJRBcAQALRBQCQQHQBACQQXQAACUQXAEAC0QUAkEB0AQAkEF0AAAlEFwBAAtEFAJBAdAEAJBBdAAAJRBcAQALRBQCQQHQBACQQXQAACUQXAEAC0QUAkEB0AQAkEF0AAAlEFwBAAtEFAJBAdAEAJBBdAAAJRBcAQALRBQCQQHQBACQQXQAACUQXAEAC0QUAkEB0AQAkEF0AAAlEFwBAAtEFAJBAdAEAJBBdAAAJRBcAQALRBQCQQHQBACQQXQAACUQXAEAC0QUAkEB0AQAkEF0AAAlEFwBAAtEFAJBAdAEAJBBdAAAJRBcAQALRBQCQQHQBACQQXQAACUQXAEAC0QUAkEB0AQAkEF0AAAlEFwBAAtEFAJBAdAEAJBBdAAAJRBcAQALRBQCQQHQBACQQXQAACUQXAEAC0QUAkEB0AQAkEF0AAAlEFwBAAtEFAJBAdAEAJBBdAAAJRBcAQALRBQCQYETR1dLSEnV1dVFVVRX19fXR3t7+gfN37NgR9fX1UVVVFXPmzImHHnpoRIsFAJioSo6u7du3x5o1a2LDhg3R0dERy5Yti+XLl0dnZ+ew8w8ePBjXXXddLFu2LDo6OuKb3/xmrF69Op566qkPvXgAgImirCiKopQDFi1aFPPnz4/NmzcPjM2dOzdWrFgRzc3NQ+Z/4xvfiOeeey72798/MNbY2BivvPJK7Nq166zes6+vL2pqaqK3tzeqq6tLWS4AQEnGqjvKS5l8/Pjx2LNnT6xbt27QeENDQ+zcuXPYY3bt2hUNDQ2Dxq699trYsmVLvPfeezFlypQhx/T390d/f//A897e3oh4/x8CAMBYOt0bJZ6X+p1Kiq6enp44efJk1NbWDhqvra2N7u7uYY/p7u4edv6JEyeip6cnpk+fPuSY5ubm2Lhx45DxWbNmlbJcAIARO3r0aNTU1Iza65UUXaeVlZUNel4UxZCx3zV/uPHT1q9fH01NTQPP33rrrZg9e3Z0dnaO6odnbPT19cWsWbPi0KFDLgdPEPZsYrFfE489m1h6e3vj8ssvj4svvnhUX7ek6Jo2bVpMnjx5yFmtI0eODDmbddqll1467Pzy8vKYOnXqsMdUVlZGZWXlkPGamhr/sk4g1dXV9muCsWcTi/2aeOzZxDJp0ujeWaukV6uoqIj6+vpoa2sbNN7W1hZLliwZ9pjFixcPmf/CCy/EggULhv0+FwDA76OSE66pqSkefvjh2Lp1a+zfvz/Wrl0bnZ2d0djYGBHvXxpctWrVwPzGxsZ4/fXXo6mpKfbv3x9bt26NLVu2xF133TV6nwIAYJwr+TtdK1eujKNHj8amTZuiq6sr5s2bF62trTF79uyIiOjq6hp0z666urpobW2NtWvXxoMPPhgzZsyIBx54IL70pS+d9XtWVlbGvffeO+wlR8Yf+zXx2LOJxX5NPPZsYhmr/Sr5Pl0AAJTO714EAEggugAAEoguAIAEogsAIMG4ia6Wlpaoq6uLqqqqqK+vj/b29g+cv2PHjqivr4+qqqqYM2dOPPTQQ0krJaK0/Xr66afjmmuuiY9+9KNRXV0dixcvjp/+9KeJqyWi9J+x015++eUoLy+Pz3zmM2O7QAYpdb/6+/tjw4YNMXv27KisrIyPf/zjsXXr1qTVElH6nm3bti2uuuqquPDCC2P69Olx2223xdGjR5NWe3578cUX44YbbogZM2ZEWVlZPPvss7/zmFHpjmIc+Kd/+qdiypQpxY9//ONi3759xZ133llcdNFFxeuvvz7s/AMHDhQXXnhhceeddxb79u0rfvzjHxdTpkwpnnzyyeSVn59K3a8777yz+Pa3v138x3/8R/Hqq68W69evL6ZMmVL813/9V/LKz1+l7tlpb731VjFnzpyioaGhuOqqq3IWy4j264tf/GKxaNGioq2trTh48GDx7//+78XLL7+cuOrzW6l71t7eXkyaNKn43ve+Vxw4cKBob28vPvWpTxUrVqxIXvn5qbW1tdiwYUPx1FNPFRFRPPPMMx84f7S6Y1xE18KFC4vGxsZBY5/4xCeKdevWDTv/7/7u74pPfOITg8a+8pWvFJ/97GfHbI38n1L3azif/OQni40bN4720jiDke7ZypUri7//+78v7r33XtGVqNT9+ud//ueipqamOHr0aMbyGEape/YP//APxZw5cwaNPfDAA8XMmTPHbI0M72yia7S645xfXjx+/Hjs2bMnGhoaBo03NDTEzp07hz1m165dQ+Zfe+21sXv37njvvffGbK2MbL9+26lTp+LYsWOj/otEGd5I9+yRRx6J1157Le69996xXiL/z0j267nnnosFCxbEd77znbjsssviyiuvjLvuuit+85vfZCz5vDeSPVuyZEkcPnw4WltboyiKeOONN+LJJ5+M66+/PmPJlGi0uqPkO9KPtp6enjh58uSQX5hdW1s75Bdln9bd3T3s/BMnTkRPT09Mnz59zNZ7vhvJfv227373u/HOO+/EjTfeOBZL5LeMZM9++ctfxrp166K9vT3Ky8/5/02cV0ayXwcOHIiXXnopqqqq4plnnomenp746le/Gm+++abvdSUYyZ4tWbIktm3bFitXroz/+Z//iRMnTsQXv/jF+P73v5+xZEo0Wt1xzs90nVZWVjboeVEUQ8Z+1/zhxhkbpe7XaY8//nh861vfiu3bt8cll1wyVstjGGe7ZydPnoybbropNm7cGFdeeWXW8vgtpfyMnTp1KsrKymLbtm2xcOHCuO666+L++++PRx991NmuRKXs2b59+2L16tVxzz33xJ49e+L555+PgwcPDvweY8af0eiOc/6fsNOmTYvJkycP+a+BI0eODKnK0y699NJh55eXl8fUqVPHbK2MbL9O2759e9x+++3xxBNPxNVXXz2Wy+T/KXXPjh07Frt3746Ojo74+te/HhHv/6FeFEWUl5fHCy+8EF/4whdS1n4+GsnP2PTp0+Oyyy6LmpqagbG5c+dGURRx+PDhuOKKK8Z0zee7kexZc3NzLF26NO6+++6IiPj0pz8dF110USxbtizuu+8+V2zGmdHqjnN+pquioiLq6+ujra1t0HhbW1ssWbJk2GMWL148ZP4LL7wQCxYsiClTpozZWhnZfkW8f4br1ltvjccee8x3FpKVumfV1dXx85//PPbu3TvwaGxsjD/+4z+OvXv3xqJFi7KWfl4ayc/Y0qVL49e//nW8/fbbA2OvvvpqTJo0KWbOnDmm62Vke/buu+/GpEmD/wiePHlyRPzfGRTGj1HrjpK+dj9GTv9V2y1bthT79u0r1qxZU1x00UXFf//3fxdFURTr1q0rbr755oH5p//q5tq1a4t9+/YVW7ZsccuIRKXu12OPPVaUl5cXDz74YNHV1TXweOutt87VRzjvlLpnv83fXsxV6n4dO3asmDlzZvGXf/mXxS9+8Ytix44dxRVXXFHccccd5+ojnHdK3bNHHnmkKC8vL1paWorXXnuteOmll4oFCxYUCxcuPFcf4bxy7NixoqOjo+jo6Cgiorj//vuLjo6OgVt8jFV3jIvoKoqiePDBB4vZs2cXFRUVxfz584sdO3YM/G+33HJL8bnPfW7Q/H/9138t/uRP/qSoqKgoPvaxjxWbN29OXvH5rZT9+tznPldExJDHLbfckr/w81ipP2P/n+jKV+p+7d+/v7j66quLCy64oJg5c2bR1NRUvPvuu8mrPr+VumcPPPBA8clPfrK44IILiunTpxd/9Vd/VRw+fDh51eenf/mXf/nAP5fGqjvKisJ5TACAsXbOv9MFAHA+EF0AAAlEFwBAAtEFAJBAdAEAJBBdAAAJRBcAQALRBQCQQHQBACQQXQAACUQXAEAC0QUAkOB/AaSZ7p52J6PNAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 700x700 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "time1_aux = time.time()\n",
    "fig = plt.figure(figsize=(7,7))\n",
    "ax = fig.add_subplot(111)\n",
    "\n",
    "T = G.copy()\n",
    "# T = nx.minimum_spanning_tree(T, algorithm='kruskal')#, weight='weight')\n",
    "# T = nx.relabel_nodes(T, dict(aux.reset_index()['index']))\n",
    "# nodes_with_degree_gt = [node for node, degree in T.degree() if (degree >= 3) or (node in nodes2highlight)]\n",
    "# T = T.subgraph(nodes_with_degree_gt)\n",
    "g = Graph(T,\n",
    "          node_color={k:v for k,v in node_color.items() if k in T.nodes},#node_color,\n",
    "          node_size={k:2 for k in T.nodes},#node_size,\n",
    "          # node_shape={k:v for k,v in node_shape.items() if k in T.nodes},\n",
    "          node_alpha={k:0.95 for k in T.nodes},#node_alpha,\n",
    "          # node_edge_width={k:v for k,v in node_edge_width.items() if k in T.nodes},#node_edge_width,\n",
    "          edge_alpha=0.25,\n",
    "          edge_width=.5,\n",
    "          node_zorder=1,#{k:v for k,v in node_zorder.items() if k in T.nodes},#node_zorder,\n",
    "          edge_zorder=0,#node_edge_width=0, \n",
    "          node_layout='community',#node_positions_pos,#\n",
    "          node_layout_kwargs=dict(node_to_community={k:v for k,v in node_to_community.items() if k in T.nodes}),\n",
    "          # node_labels={n:n for n in nodes2highlight},\n",
    "          # node_label_fontdict=dict(size=10,  color='black', fontweight='bold', style='italic', ha='center' ),#backgroundcolor='gray')bbox=dict(facecolor='red', alpha=0.5)\n",
    "          edge_layout='bundled',#edge_paths_pos,#\n",
    "          # edge_layout='curved',\n",
    "          # node_layout='radial',\n",
    "          # scale=(1.5,1.5),#origin=(-10,-10),\n",
    "      ax=ax,\n",
    "      # node_labels=pathways_subcluster,\n",
    "      # edge_layout='bundled', edge_layout_kwargs=dict(k=5,),\n",
    "      # edge_layout_kwargs={'k': 500, 'total_cycles': 6},#dict(k=2000), \n",
    "      # \n",
    ")\n",
    "\n",
    "texts = []\n",
    "for clu in aux.node_to_community.unique():\n",
    "    x, y = np.mean(aux[aux.node_to_community==clu].node_positions_pos.values,axis=0)\n",
    "    # print(x,y)\n",
    "    texts.append(ax.text(x, y, str(clu), ha='left', va='bottom', size=15,\n",
    "                             fontweight='bold', #style='italic', \n",
    "                             color='black',\n",
    "                             bbox=dict(facecolor='white', alpha=0.9, pad=0, boxstyle='round')\n",
    "                            ) )\n",
    "\n",
    "# texts = []\n",
    "# # adjust_text(texts);\n",
    "# for k,v in g.node_positions.items():\n",
    "#     if k in nodes2highlight:\n",
    "#         if k in aux[aux.type=='metabolomics'].index:\n",
    "#             color = [0.134692, 0.658636, 0.517649, 1.      ]\n",
    "#         elif k in aux[aux.type=='proteomics'].index:\n",
    "#             color = [0.253935, 0.265254, 0.529983, 1.      ]\n",
    "#         elif k in aux[aux.type=='clinical'].index:\n",
    "#             color = '#c78100'\n",
    "#         texts.append(ax.text(v[0],v[1], k, ha='center', va='center', size=10,\n",
    "#                              fontweight='bold', #style='italic', \n",
    "#                              color=color,\n",
    "#                              bbox=dict(facecolor='white', alpha=0.5, pad=0, boxstyle='round')\n",
    "#                             ) \n",
    "#                     )#[nodes2highlight_names[k],v[0],v[1]])\n",
    "        \n",
    "adjust_text(texts)#, expand=(2,2))\n",
    "plt.show()\n",
    "time2_aux = time.time()\n",
    "print(int((time2_aux-time1_aux)//60),(time2_aux-time1_aux)%60, sep=':')\n",
    "\n",
    "# fig.savefig('/mnt/d/xeno/FDA_proteomics_metabolomics_clinical_pos3.svg', format='svg', dpi=300, bbox_inches='tight')\n",
    "# fig.savefig('/mnt/d/xeno/FDA_proteomics_metabolomics_clinical_pos3.png', format='png', dpi=300, bbox_inches='tight')\n",
    "# fig.savefig('/mnt/d/xeno/FDA_proteomics_metabolomics_clinical_pos3.pdf', format='pdf', dpi=300, bbox_inches='tight')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "4de8ddec-a08c-41ea-867a-caacba29891b",
   "metadata": {},
   "outputs": [],
   "source": [
    "node_positions_pos = g.node_positions\n",
    "edge_paths_pos = g.edge_paths\n",
    "aux['node_positions_pos'] = aux.index.map(node_positions_pos)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "f8211637-9f2b-4df6-8766-bc5b9e6f6c17",
   "metadata": {},
   "outputs": [],
   "source": [
    "pairs = []\n",
    "for o in order:\n",
    "    pairs.append(tuple([(o, h) for h in hue_order]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f3b0de46-eea2-4cd0-815a-9c1679dc79bb",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "347f5e3e-8a01-4b25-8d7f-33ec6ec31e56",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "493277b0-78ab-4fc6-a422-a0a28a3514b2",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b630bf32-ce5c-4505-8f9d-5cc5d8b39e22",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "96719336-3412-491c-9d4e-d804e5833437",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d0c19dac-4bca-415c-94ce-5fe5fd2b7a53",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ffad8c2c-7f13-4e4f-8894-d3986b0b6f3a",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7bd8f70c-3595-4a72-904b-d2824cc5835e",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "a242c04f-50e4-40f1-b3cf-6c5135da43f9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "p-value annotation legend:\n",
      "      ns: 5.00e-02 < p <= 1.00e+00\n",
      "       *: 1.00e-02 < p <= 5.00e-02\n",
      "      **: 1.00e-03 < p <= 1.00e-02\n",
      "     ***: 1.00e-04 < p <= 1.00e-03\n",
      "    ****: p <= 1.00e-04\n",
      "\n",
      "Thur vs. Fri: Mann-Whitney-Wilcoxon test two-sided, P_val:6.477e-01 U_stat=6.305e+02\n",
      "Thur vs. Sat: Mann-Whitney-Wilcoxon test two-sided, P_val:4.690e-02 U_stat=2.180e+03\n",
      "Sun vs. Fri: Mann-Whitney-Wilcoxon test two-sided, P_val:2.680e-02 U_stat=9.605e+02\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(<Axes: xlabel='day', ylabel='total_bill'>,\n",
       " [<statannotations.Annotation.Annotation at 0x7f0ac974c680>,\n",
       "  <statannotations.Annotation.Annotation at 0x7f0ac9718230>,\n",
       "  <statannotations.Annotation.Annotation at 0x7f0ac971ad80>])"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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W3ezAAAAvpFXU8a1116rTz75xJsvAQAAApxXw0zH7MAAAADewv0fAABgNMIMAAAwGmEGAAAYzathpjsraQMAAHQFHYABAIDRurU2U2f93//9n4YMGeLNlwAAAAGu02Fm2rRpnT7pf/7nf0qSYmNju14RAABAF3Q6zERGRnqzDgAAgG7pdJhZu3atN+sAAADoFoZmAwAAo3W7A/Dvfvc7/cd//IeOHDmitrY2j31vv/32ZRcGAADQGd1qmVm5cqXuv/9+XXnllaqoqNBNN92kQYMG6eOPP9bUqVN7ukYAAICL6laYKS4uVklJiVatWqW+fftqwYIF2rZtmx599FE1Njb2dI0AAAAX1a3bTEeOHNH48eMlSWFhYTp58qQk6cc//rHGjRunVatW9VyFNjl27JjRwezw4cMef5osMjJS0dHRdpcBAPBR3QozTqdTn3/+ueLj4xUfH699+/YpJSVF1dXVfjHr77Fjx/SjH9+rM22tdpdy2QoKCuwu4bJd0TdEG377IoEGAHBB3Qoz3/3ud/X73/9eY8aM0axZs/T444/rd7/7nd58880uTa7nqxobG3WmrVXNiRPVHsr8OnYKammUPt6txsZGwgwA4IK6FWZKSkrU3t4uSXr44Yc1cOBA/fGPf9Rtt92mhx9+uEcLtFN7aKTa+/2t3WUAAIBL6FaY+fTTTz2WKrjrrrt01113ybIs1dTUKC4urscKBAAAuJRujWZKSEjQn//85/O219fXKyEh4bKLAgAA6KxutcxYliWHw3He9i+++EKhoaGXXRQAAD2F0am+w1ujU7sUZubPny9JcjgcevLJJxUeHu7e53K59MYbb+j666/v0QIBAOguRqf6Fm+NTu1SmKmoqJD0ZcvMwYMH1bdvX/e+vn37KiUlRU888USPFggAQHcxOtV3eHN0apfCzM6dOyVJ999/v375y19qwIABPVoMAADewOhU/9atPjNr1651//3TTz+Vw+HQ0KFDe6woAACAzurWaKb29nY99dRTioyMVHx8vOLi4hQVFaWnn37aPf8MAABAb+hWy0xWVpaef/55PfPMM5owYYIsy9KePXuUm5urlpYWv+ikBAAAzNCtMLN+/XqtWbNGt99+u3tbSkqKhg4dqszMTMIMAADoNd26zVRfX69rrrnmvO3XXHON6uvrL7soAACAzupWmElJSdGqVavO275q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vqrvf//72rVrl8aMGaN169Z16Tznhp+YmBhJX3ZCgxl64vpdd911BBkD3HzzzTpw4ID7sXLlSknSjTfeaHNl6Cnf9Lm+c+dOTZ48WUOHDlVERITuvfdeff755zp16pS9hfsQwoyBQkNDNXnyZC1atEh79+7VzJkzlZOTo6CgLy+ndc4KFWfOnLngOa644gr33x0OhySpvb3di1WjJ13q+gUFBXm8B6QLvw/69evnxQrRU/r166fhw4e7Hx3hlevnXy72uX748GHdcsstGjVqlF5++WW99dZbKioqknTxz/dARJjxA9dee61OnTrlHuFw7qgY5iMJPIMHD1ZdXZ1HoOF9AJil43P9zTff1NmzZ7V06VKNGzdOI0eO1NGjRz2O7du3r1wul02V+gb6zBjk888/15133qkHHnhAycnJioiI0JtvvqklS5bojjvuUFhYmMaNG6dnnnlG3/rWt/SXv/xF2dnZdpeNXpaenq4///nPWrJkif7pn/5Jr7/+uv7whz9owIABdpcG4Gu+6XP9qquu0tmzZ/WrX/1Kt912m/bs2aNf//rXHuf41re+pS+++EI7duxQSkqKwsPDFR4ebtNvZA9aZgzSv39/jR07VsuXL1daWppGjRqlJ598Ug8++KBWrVolSXrhhRd05swZ3XjjjXrssceUn59vc9XobX/3d3+n4uJiFRUVKSUlRf/7v/8bkKMbABN80+f69ddfr2XLlunZZ5/VqFGjVFpaqsWLF3ucY/z48Xr44Yd19913a/DgwQHZMdxhff3mOgAAgEFomQEAAEYjzAAAAKMRZgAAgNEIMwAAwGiEGQAAYDTCDAAAMBphBgAAGI0wA8AI6enpHqsHA0AHwgwAADAaYQYAABiNMAPA55w6dUr33nuv+vfvr5iYGC1dutRj/4YNG3TjjTcqIiJCTqdTM2bM0PHjxyVJlmVp+PDh+td//VePn3n33XcVFBSkjz76qNd+DwC9gzADwOf89Kc/1c6dO7V582Zt3bpVu3bt0ltvveXe39bWpqefflrvvPOOXnnlFVVXV2vmzJmSJIfDoQceeEBr1671OOcLL7yg73znO7rqqqt681cB0AtYaBKAT/niiy80aNAgvfjii7r77rslSfX19Ro2bJhmz56tFStWnPcz+/fv10033aSTJ0+qf//+qq2tVWxsrPbu3aubbrpJZ86c0dChQ/WLX/xC9913Xy//RgC8jZYZAD7lo48+Ultbm1JTU93bBg4cqKuvvtr9vKKiQnfccYfi4+MVERGh9PR0SdKRI0ckSTExMbr11lv1wgsvSJJee+01tbS06M477+y9XwRAryHMAPAp39RYfOrUKU2ZMkX9+/fXhg0btH//fm3evFnSl7efOvzkJz/Rpk2b1NzcrLVr1+ruu+9WeHi4V2sHYA/CDACfMnz4cF1xxRXat2+fe1tDQ4Pef/99SdJ7772nv/zlL3rmmWf0ne98R9dcc4278++5brnlFvXr10+rV6/WH/7wBz3wwAO99jsA6F197C4AAM7Vv39/zZo1Sz/96U81aNAgRUdHKysrS0FBX/7bKy4uTn379tWvfvUrPfzww3r33Xf19NNPn3ee4OBgzZw5UwsXLtTw4cM9blsB8C+0zADwOb/4xS+Ulpam22+/XZMmTdK3v/1t3XDDDZKkwYMHa926dXrppZd07bXX6plnnjlvGHaHWbNmqa2tjVYZwM8xmgmA39qzZ4/S09P16aefKjo62u5yAHgJYQaA32ltbVVNTY1mz56tmJgYlZaW2l0SAC/iNhMAv/Nv//Zvuvrqq9XY2KglS5bYXQ4AL6NlBgAAGI2WGQAAYDTCDAAAMBphBgAAGI0wAwAAjEaYAQAARiPMAAAAoxFmAACA0QgzAADAaIQZAABgtP8HAlGaZBil+qoAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn as sns\n",
    "\n",
    "from statannotations.Annotator import Annotator\n",
    "\n",
    "df = sns.load_dataset(\"tips\")\n",
    "x = \"day\"\n",
    "y = \"total_bill\"\n",
    "order = ['Sun', 'Thur', 'Fri', 'Sat']\n",
    "\n",
    "ax = sns.boxplot(data=df, x=x, y=y, order=order)\n",
    "\n",
    "pairs=[(\"Thur\", \"Fri\"), (\"Thur\", \"Sat\"), (\"Fri\", \"Sun\")]\n",
    "\n",
    "annotator = Annotator(ax, pairs, data=df, x=x, y=y, order=order)\n",
    "annotator.configure(test='Mann-Whitney', text_format='star', loc='outside')\n",
    "annotator.apply_and_annotate()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "7d30309f-58b8-4538-9765-60d44f8ec3f5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>carat</th>\n",
       "      <th>cut</th>\n",
       "      <th>color</th>\n",
       "      <th>clarity</th>\n",
       "      <th>depth</th>\n",
       "      <th>table</th>\n",
       "      <th>price</th>\n",
       "      <th>x</th>\n",
       "      <th>y</th>\n",
       "      <th>z</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.23</td>\n",
       "      <td>Ideal</td>\n",
       "      <td>E</td>\n",
       "      <td>SI2</td>\n",
       "      <td>61.5</td>\n",
       "      <td>55.0</td>\n",
       "      <td>326</td>\n",
       "      <td>3.95</td>\n",
       "      <td>3.98</td>\n",
       "      <td>2.43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.21</td>\n",
       "      <td>Premium</td>\n",
       "      <td>E</td>\n",
       "      <td>SI1</td>\n",
       "      <td>59.8</td>\n",
       "      <td>61.0</td>\n",
       "      <td>326</td>\n",
       "      <td>3.89</td>\n",
       "      <td>3.84</td>\n",
       "      <td>2.31</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.23</td>\n",
       "      <td>Good</td>\n",
       "      <td>E</td>\n",
       "      <td>VS1</td>\n",
       "      <td>56.9</td>\n",
       "      <td>65.0</td>\n",
       "      <td>327</td>\n",
       "      <td>4.05</td>\n",
       "      <td>4.07</td>\n",
       "      <td>2.31</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.29</td>\n",
       "      <td>Premium</td>\n",
       "      <td>I</td>\n",
       "      <td>VS2</td>\n",
       "      <td>62.4</td>\n",
       "      <td>58.0</td>\n",
       "      <td>334</td>\n",
       "      <td>4.20</td>\n",
       "      <td>4.23</td>\n",
       "      <td>2.63</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.31</td>\n",
       "      <td>Good</td>\n",
       "      <td>J</td>\n",
       "      <td>SI2</td>\n",
       "      <td>63.3</td>\n",
       "      <td>58.0</td>\n",
       "      <td>335</td>\n",
       "      <td>4.34</td>\n",
       "      <td>4.35</td>\n",
       "      <td>2.75</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   carat      cut color clarity  depth  table  price     x     y     z\n",
       "0   0.23    Ideal     E     SI2   61.5   55.0    326  3.95  3.98  2.43\n",
       "1   0.21  Premium     E     SI1   59.8   61.0    326  3.89  3.84  2.31\n",
       "2   0.23     Good     E     VS1   56.9   65.0    327  4.05  4.07  2.31\n",
       "3   0.29  Premium     I     VS2   62.4   58.0    334  4.20  4.23  2.63\n",
       "4   0.31     Good     J     SI2   63.3   58.0    335  4.34  4.35  2.75"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = sns.load_dataset('diamonds')\n",
    "df = df[df['color'].map(lambda x: x in 'EIJ')]\n",
    "# Modifying data to yield unequal boxes in the hue value\n",
    "df.loc[df['cut'] == 'Ideal', 'price'] = df.loc[df['cut'] == 'Ideal', 'price'].map(lambda x: min(x, 5000))\n",
    "df.loc[df['cut'] == 'Premium', 'price'] = df.loc[df['cut'] == 'Premium', 'price'].map(lambda x: min(x, 7500))\n",
    "df.loc[df['cut'] == 'Good', 'price'] = df.loc[df['cut'] == 'Good', 'price'].map(lambda x: min(x, 15000))\n",
    "df.loc[df['cut'] == 'Very Good', 'price'] = df.loc[df['cut'] == 'Very Good', 'price'].map(lambda x: min(x, 3000))\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d1ba60e7-46e6-4819-863a-eb27f9119308",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3f4887e4-36ca-495b-8ba3-71242397375d",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a888f013-a29f-40fe-9b39-3ff6086a8f20",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "a5cc88cc-d763-4504-aa88-b9d32b7728e8",
   "metadata": {},
   "outputs": [],
   "source": [
    "# edge_paths_pos"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "d9305067-3ae9-4997-bfec-a2d363b783c0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9563173441911401"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "a72c2dff-aed6-4ca4-b9e7-44f51c137feb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.2522823432063515"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "bced433d-b748-4347-8435-528d1808c4cc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'Gm20627': 2, 'Rps2-ps5': 3, 'Tspan7': 4, 'Gm26608': 3, 'Gm56863': 2, 'Gm30292': 0, 'Ttn': 4, 'Rps15a-ps6': 4, 'Gm43961': 2, 'Gm38204': 0, 'Gm23887': 1, 'Gulo': 1, 'Clec1a': 0, 'Gm45355': 4, 'Gm46344': 3, 'Gm8349': 1, 'Slc6a1': 3, 'Gm49417': 2, 'Gml': 1, 'Gm9013': 0, 'Gm19001': 2, 'Gm57055': 0, 'F930017D23Rik': 3, 'Gm2427': 4, 'Tc2n': 0, 'Gm3227': 0, 'Gm34730': 3, 'Zscan4e': 2, 'Adamts4': 3, 'Gm24289': 1, 'Gm9431': 0, 'Gm45469': 2, 'Gm2445': 2, 'Gm17749': 3, 'Gm35551': 2, 'Gm8225': 0, 'Zfp92': 2, 'Snora20': 0, 'Rpl39-ps': 0, 'Gm13597': 4, 'Gm26885': 3, 'Zkscan4': 0, 'Gm21972': 3, 'Gm42596': 3, 'Gm17613': 1, 'A230072C01Rik': 0, 'Cd40lg': 3, 'Smim38': 2, 'Gm29596': 3, 'Gm34267': 0, 'G730013B05Rik': 0, 'Gm6961': 3, 'Fzd2': 1, 'Gm8925': 2, 'Gm26347': 4, 'A230087F16Rik': 5, 'Gm29485': 4, 'Entpd3': 0, 'Gm45515': 1, 'Gm42941': 5, 'Gm5518': 0, 'Gm16374': 0, 'Gm55663': 1, 'Gm30693': 0, 'Gm17597': 0, 'Gm27224': 1, 'Folr2': 2, 'Slc4a11': 0, 'AW822252': 1, 'Gm11454': 3, 'Gm28403': 0, 'Hsd17b2': 2, 'Gm16599': 2, 'Gm26585': 3, 'Zfp36l3': 1, 'Gm16236': 4, '4930568A12Rik': 4, 'Gm17146': 0, 'A930016O22Rik': 2, 'Fxyd2': 0, 'Gm32695': 3, 'Gm44401': 1, 'Gm5896': 4, 'Henmt1': 4, 'Tktl1': 0, 'Gm49476': 4, 'A830082N09Rik': 4, 'Ywhaq-ps2': 0, '9530080O11Rik': 0, 'Gm16574': 0, 'A930015P04Rik': 1, 'Gm5692': 0, 'Gm31641': 0, 'Gm48500': 5, 'Gm15544': 3, 'Gm45555': 5, 'Gm43623': 0, 'Sele': 0, 'Best2': 2, 'Elavl3': 0, 'Gm43761': 1, 'Rpl5-ps2': 2, 'Rpl31-ps16': 0, 'Gm25890': 1, 'D330025C20Rik': 0, '4933429H19Rik': 1, 'Gm45797': 3, 'Gm8274': 1, 'A230083G16Rik': 2, 'Gm34590': 1, 'Tdrd12': 4, 'Gm20540': 0, 'Gm3235': 1, 'Vmn2r72': 1, 'Garin1a': 4, 'Gm18451': 1, 'Gm29008': 0, 'Tspan12': 1, 'Gm13285': 1, 'Gm13568': 1, 'Cftr': 0, 'Gm47726': 4, 'Gm4294': 4, 'Igkv2-116': 5, 'Gm57161': 5, 'Gm16587': 0, 'Gm17540': 0, 'Gm17812': 4, 'She': 0, 'Vmn2r7': 0, 'Gm10817': 3, 'Fcrlb': 2, 'Cyp46a1': 3, 'Gm48623': 3, 'Flacc1': 0, 'Gm29994': 0, 'Vmn2r97': 1, 'Gm20479': 2, 'Gm44771': 2, 'Gm42634': 1, 'Gm12737': 4, 'Gm56501': 5, 'Ahsg': 1, 'Gm16181': 3, 'Gm49026': 1, 'Gm15883': 3, 'Ccdc17': 2, 'Gm45630': 5, 'Gm38979': 0, 'Gm9083': 0, 'Cfap43': 3, 'Hmgb1-ps7': 2, 'Serpine3': 2, 'Gm19426': 2, 'Gm24474': 1, 'Gm37833': 0, 'Gm20531': 0, 'Elapor1': 2, 'Gm57215': 2, 'Bach2it1': 1, 'Ighv12-3': 0, 'Gm26165': 0, 'Gnat2': 0, 'Gm19046': 3, 'Gm45821': 3, 'Adcy5': 2, 'Gm16069': 0, 'Crb1-ps': 3, 'Gm12017': 5, 'Serpinc1': 3, 'A130048G24Rik': 1, 'Cyp2j13': 0, 'Gm20544': 1, 'Gm9085': 2, 'Foxl3': 2, 'Gm28535': 4, 'Epgn': 2, 'Snord83b': 3, 'Gm42992': 1, 'Gm13783': 3, 'Nmi': 4, 'Gm29107': 1, 'Gm38062': 1, 'Gm2396': 2, 'Gm57383': 1, 'Dok7': 3, 'Gm15821': 4, 'Gm22884': 1, 'Snhg17': 2, 'Snai1': 1, 'Gm44745': 5, 'Cks1brt': 2, 'Kif26a': 0, 'Efcab8': 2, 'Igkv14-126-1': 1, 'Ccser1': 0, 'Gm57257': 2, 'Sema3f': 3}\n",
      "['Igkv2-116', 'Gm56501', 'Gm5628', 'Gm15544', 'Gm15839', 'Gm15854', 'Gm5586', 'Gm15979', 'Gm16213', 'Gm16224', 'Or10ag59', 'Gm56509', 'Gm17068', 'Gm17812', 'Gm17949', 'Gm49476', 'Or2z2', 'Shisa4', 'Gm19967', 'Gm48500', 'Gm21742', 'Gm22661', 'Gm48261', 'Gm17613', 'Gm2541', 'Gm56538', 'Gm14137', 'Tmc2', 'Mycbp2', 'Gm11545', 'Timm8a2', 'Gm57161', 'Gm12017', 'Gm12164', 'Gm12191', 'Gm12312', 'Gm12583', 'Nos3', 'Gm12737', 'Gm13008', 'Gm13034', 'Abcc12', 'Gm13196', 'Gm13213', 'Nkain1', 'Gm13283', 'Gm13431', 'Gm13481', '4933429H19Rik', 'Gm56865', 'Tmem150c', 'Gm26696', 'Gm4750', 'Gm37262', 'Gm44284', 'Gm44190', 'Gm37437', 'Gm44103', 'Gm43799', 'Gm43787', 'Rmst', 'Gm37799', 'Gm37854', 'Rpl19-ps6', 'Gm43509', 'Rec114', 'Prm1', 'Rbm6-ps1', 'Rbfox1', 'Gm38204', 'Gm43072', 'Prss3b', 'Aldh3b3', 'Gm4017', 'Prss41', 'Gm43414', 'Scarna13', 'Gm37025', 'Gm36447', 'Gm47208', 'Gm28277', 'Gm47206', 'Gm29112', 'Gm31282', 'Gm31583', 'Rps2-ps5', 'Gm32158', 'Gm32554', '4930500M09Rik', 'Pla2g4c-ps', 'Gm45471', 'Rpl7a-ps3', 'Gm45124', 'Gm33782', 'Gm44996', 'Gm34643', 'Gm44760', 'Gm35340', 'Rpl31-ps13', 'Gm44702', 'Gm35667', 'Gm3307', 'Gm10399', 'Gm5644', 'D030045P18Rik', 'Gm6087', 'Trbv26', 'Foxg1', 'H1f6', 'Eif5al3-ps', 'A930002I21Rik', 'Ccnb3', 'Cdc42ep1', 'Gm6988', 'Magea13', 'Gm7560', 'Cfap20dc', 'Vmn2r75', 'Fstl4', 'Dnai7', 'Chchd2-ps', 'Clec2e', 'Ubtfl1', 'Gm9227', 'Gm7808', 'Ky', 'Dio1', 'Vmn1r84', 'Vmn1r38', 'Col4a3', 'Gm8108', 'Usp26', 'Gm8425', 'B020014A21Rik', 'Mif-ps8', 'Gm8288', 'Gm10075', 'Gm10054', 'Trav4-4-dv10', 'Gcg', 'Igkv4-77', 'Ghrhr', 'Hmgb1-rs16', 'Gm57430', 'Gm9083', 'Gm45555', 'Gm45515', 'Igkv14-126-1', 'Gm9085', 'Gm45469', 'Gm45355', 'Adra2b', 'Igkv14-100', 'Ighv2-6', 'Gm42992', 'Gm45208', 'Ighv12-3', 'A230087F16Rik', 'Gm45630', 'Gm43623', 'A230083G16Rik', 'Gm47726', 'Gm47665', 'Gm8349', 'Gm47237', 'Adcy5', 'Aknad1', 'Gm8439', 'Gm8925', 'Gm45797', 'Gm4294', 'Gm8960', 'Gm46409', 'Gm46344', 'Gm45880', 'Gm45821', 'Gm9013', 'Gm42941', 'Gm45804', 'Gm47061', 'Gm43191', 'A230072C01Rik', 'Gm4478', 'Gm43318', 'Gm44027', 'Gm43961', 'Hmgb1-ps7', 'Gm43825', 'Gm43817', 'Gulo', 'Gm43464', 'Gm43773', 'Gm43761', 'Hbb-y', 'Henmt1', 'Gm43466', 'Gm43488', 'Ahsg']\n"
     ]
    }
   ],
   "source": [
    "print(node_to_community)\n",
    "print(T.nodes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "cfbfeb75-1fab-472a-b1a8-4bbdf319a674",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "be20cad3-e1b2-4ac1-b32d-102e15ad95da",
   "metadata": {},
   "outputs": [],
   "source": [
    "time1 = time.time()\n",
    "dc, pv = dist_pv(df_tpm.T.values, n_boot=100, random_state=42, metric='correlation')\n",
    "time2 = time.time()\n",
    "print(int((time2-time1)//60),(time2-time1)%60, sep=':')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 167,
   "id": "daa02721-2577-485e-9b2a-a169dafcd8b2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Gene_name</th>\n",
       "      <th>Marchf1</th>\n",
       "      <th>Marchf10</th>\n",
       "      <th>Marchf11</th>\n",
       "      <th>Marchf2</th>\n",
       "      <th>Marchf3</th>\n",
       "      <th>Marchf4</th>\n",
       "      <th>Marchf5</th>\n",
       "      <th>Marchf6</th>\n",
       "      <th>Marchf7</th>\n",
       "      <th>Marchf8</th>\n",
       "      <th>Marchf9</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Cond_knock_1_S1</th>\n",
       "      <td>34.575813</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>43.369705</td>\n",
       "      <td>5.737980</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>64.172064</td>\n",
       "      <td>39.131007</td>\n",
       "      <td>27.981048</td>\n",
       "      <td>15.123763</td>\n",
       "      <td>0.210407</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cond_knock_2_S2</th>\n",
       "      <td>34.818975</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>44.364594</td>\n",
       "      <td>5.268818</td>\n",
       "      <td>0.010275</td>\n",
       "      <td>63.833374</td>\n",
       "      <td>37.429846</td>\n",
       "      <td>27.912459</td>\n",
       "      <td>16.484982</td>\n",
       "      <td>0.110544</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cond_knock_3_S3</th>\n",
       "      <td>31.294261</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>43.652217</td>\n",
       "      <td>5.672238</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>60.753375</td>\n",
       "      <td>37.184247</td>\n",
       "      <td>25.468047</td>\n",
       "      <td>15.249006</td>\n",
       "      <td>0.113570</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_1_S4</th>\n",
       "      <td>34.989024</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>44.386916</td>\n",
       "      <td>4.260662</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>63.184139</td>\n",
       "      <td>39.370131</td>\n",
       "      <td>26.806285</td>\n",
       "      <td>12.728661</td>\n",
       "      <td>0.208338</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_2_S5</th>\n",
       "      <td>35.962404</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>45.163088</td>\n",
       "      <td>3.775335</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>61.364810</td>\n",
       "      <td>38.152110</td>\n",
       "      <td>27.638228</td>\n",
       "      <td>13.513478</td>\n",
       "      <td>0.164238</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Control_3_S6</th>\n",
       "      <td>34.069622</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>42.388787</td>\n",
       "      <td>4.051196</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>65.724032</td>\n",
       "      <td>37.551581</td>\n",
       "      <td>26.848654</td>\n",
       "      <td>12.659973</td>\n",
       "      <td>0.189680</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "Gene_name          Marchf1  Marchf10  Marchf11    Marchf2   Marchf3   Marchf4  \\\n",
       "Cond_knock_1_S1  34.575813       0.0       0.0  43.369705  5.737980  0.000000   \n",
       "Cond_knock_2_S2  34.818975       0.0       0.0  44.364594  5.268818  0.010275   \n",
       "Cond_knock_3_S3  31.294261       0.0       0.0  43.652217  5.672238  0.000000   \n",
       "Control_1_S4     34.989024       0.0       0.0  44.386916  4.260662  0.000000   \n",
       "Control_2_S5     35.962404       0.0       0.0  45.163088  3.775335  0.000000   \n",
       "Control_3_S6     34.069622       0.0       0.0  42.388787  4.051196  0.000000   \n",
       "\n",
       "Gene_name          Marchf5    Marchf6    Marchf7    Marchf8   Marchf9  \n",
       "Cond_knock_1_S1  64.172064  39.131007  27.981048  15.123763  0.210407  \n",
       "Cond_knock_2_S2  63.833374  37.429846  27.912459  16.484982  0.110544  \n",
       "Cond_knock_3_S3  60.753375  37.184247  25.468047  15.249006  0.113570  \n",
       "Control_1_S4     63.184139  39.370131  26.806285  12.728661  0.208338  \n",
       "Control_2_S5     61.364810  38.152110  27.638228  13.513478  0.164238  \n",
       "Control_3_S6     65.724032  37.551581  26.848654  12.659973  0.189680  "
      ]
     },
     "execution_count": 167,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_tpm[[c for c in df_tpm.columns if 'March' in c]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2e2c3de3-9efa-42d4-9645-1743663a53e8",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [conda env:DSenv]",
   "language": "python",
   "name": "conda-env-DSenv-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
